Sorry, learned this in physics a while ago.
You just *can't* take a value and do calculations on it and expect the error not to grow.
Timedelta is in seconds, thus 0.0001% of timedelta amounts to 0.000001* = 0.0001ms error
that over a day is: 24 hours * 60 minutes * 60 seconds * 1000 miliseconds = 86400000 ms.
the error thus will be bounded by 86400000 * 0.0001ms = 8640ms
That is, off by eight and a half seconds.
Of course, float's rounding error is not fixed and timedelta's error depends on the internal timer resolution, which could be QueryPerformanceCounter(). I read that one has microsecond resolution, which is nice. Still, it's not exact. It cannot be. Nothing is.