Ja, die Funktion Secondsbetween hat einen Bug
Das Problem daran ist, dass die SecondBetween so implementiert ist:
Result := Trunc(SecondSpan(ANow, AThen));
...und das Trunc macht hier diesen Bug aus, da es rigoros die Nachkommastellen abschneidet und das stimmt ja so nicht ganz. Round ist hier besser / genauer.
Die von dir vorgeschlagene Lösung verwende ich auch, hat eigentlich noch nie versagt...
Irgendwo stand sogar im EDN, dass man dies am Besten statt Secondsbetween verwenden soll.