Okey, I got it.
The issue was caused by storing unix timestamp as a 32-bit float. Since a float32 cannot accurately represent large unix timestamps, precision was lost, causing the timestamp to remain constant for long periods before updating in steps.