Ok, so for anyone who cares, the answer is, the negative picoseconds should be added to the seconds to get the final answer: let secondsfloat = realToFrac( tdSec timediff ) + realToFrac(tdPicosec timediff) / 1000000000000