Thank you, I will have to try this. I see 2 things that may be of concern:
1) drifting ... as these event scheduling conditions offsets occur, the shifting of 7AM can add up, I suspect a second every now and then won't impact something that is just ~"7AM" and not "7:00:00AM"
2) with this change events cannot be scheduled at a frequency of more than 5s. In all cases such a thing would probably be bad anyway. But worth mentioning.
As for the cause - I'm not sure why. It may not be from the code itself - maybe it's node being run as a process with preempting of other processes causing that code to execute too late.