Bei mir stimmt es und ist am Ende immernoch :59 .
Wurde in deinem Programm am Round-Mode rumgepfuscht?
TDateTime (Double) ist noch ein paar Jährchen genau genug, um auf mindestens 1 Millisekunde genau zu sein.
Also Rundungsfehler aufgrund der Datengröße kann es nicht sein.
Bleibt also nur noch ein anderer Rundungsmodus oder eine kaputte FPU.
PS: Ab dem 19. Januar 2038 um 03:14:08 wird deine Funktion wieder kaputt sein, wenn der Integer zu klein für den Unix-Timestamp ist.
[edit]
Ahh, also doch ein Rundungsproblemchen, nur wo anders.
und
FormatDateTime