What happens is this
- You send a request for the server asking for module activation
- Server activates the module and sends you when the module was started
- Client starts the cycle timer
Now there can be a noticeable delay between 1 and 3 so the timer starts with an offset. With short cycling modules this is a lot more noticeable as it can start halfway through the cycle.
The same applies for stopping a module. You might ask the client to stop a module before the cycle finishes but if the server doesn't receive and processes that request before the module reactivates you'll have to wait another cycle for it to deactivate.
There used to be bug with cycle timer getting out of sync when duration got modified while the module was running but that was resolved some time ago