О невероятных значениях времени...
У вас как объявлены h1,h2,m1,m2..... и иже с ними?
Видимо, эти цифры соответствуют небольшим отрицательным значениям. А тип, в который Вы их пишете - беззнаковый. Почему отрицательные? Потому что, например,
7h 23m 2s 11ms
-
7h 23m 1s 23ms
у Вас при поразрядном вычитании будет равно
0h 0m 1s -12ms.
Вычитать надо с "переносом разрядов". Либо искать какую-то специальную ф-ю паскаля - я с паскалем знаком слабовато.
Во FreePascal тип integer при выводе через writeln вполне корректно отображает отрицательные числа.
Загадку с отрицательными s, o не разгадал - давайте точный код, тогда можно будет смотреть.