diff --git a/ebpfcat/ebpfcat.py b/ebpfcat/ebpfcat.py
index 0ca45f9239118cb38a5cc02a35ebb6ce93aadabe..c2ddfb86d3a5a76dc2f6d331b8064de04bb89c91 100644
--- a/ebpfcat/ebpfcat.py
+++ b/ebpfcat/ebpfcat.py
@@ -467,7 +467,7 @@ class SterilePacket(Packet):
 
     def append(self, cmd, *args, counter=1):
         super().append(cmd, *args)
-        self.counters[self.size - 2] = counter
+        self.counters[self.size - 2] = {counter}
 
     def sterile(self, index):
         ret = bytearray(self.assemble(index))
@@ -560,6 +560,9 @@ class SyncGroupBase:
                         continue
                     data = self.update_devices(data)
                     newtime = monotonic()
+                    if newtime - lasttime > self.cycletime:
+                        logging.warning('cycletime exceeded (%f ms)',
+                                        (newtime - lasttime) * 1000)
                     await sleep(self.cycletime - (newtime - lasttime))
                     lasttime = monotonic()
             finally:
@@ -594,11 +597,12 @@ class SyncGroup(SyncGroupBase):
 
     def update_devices(self, data):
         self.current_data = bytearray(data)
-        for pos, count in self.packet.counters.items():
-            if data[pos] != count:
+        for pos, counts in self.packet.counters.items():
+            if data[pos] not in counts:
                 logging.warning(
-                    'EtherCAT datagram was processe %i times, should be %i',
-                    data[pos], count)
+                    'EtherCAT datagram processed %i times, should be in %s',
+                    data[pos], counts)
+                counts.add(data[pos])
             self.current_data[pos] = 0
         for dev in self.devices:
             dev.update()