What trainer do you have?
All trainers have an inherent delay (or lag) from when they receive a resistance change instruction to when it actually happens. If an app sends a resistance change right on the 0 of the countdown, the actual change will be delayed from the trainer lag. It makes the workoit look time shifted to the right on the graph.
Because of that, and with the goal of aligning the actual power effort more closely over the target graph, TR sends the actu resistance change instruction about 2 seconds before the actual 0 in the countdown.
This works pretty well for many trainers. Issues may arise for some trainers that respond faster. The Neo line in particular are really quick to react and can feel like the instruction is coming too soon.
Does that sound like your issue?