The seconds and nanoseconds fields seem to get swapped around, but I can't quite work out how.
See the trace below, the values seem right at the point where #<time type: time-tai nanosecond: 670560000 second: 1500195344> is created, but the final value seems to have the values the wrong way around. GNU Guile 2.2.2 Copyright (C) 1995-2017 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> ,m (srfi srfi-19) scheme@(srfi srfi-19)> (current-time-monotonic) $1 = #<time type: time-monotonic nanosecond: 500195342 second: 273413001> scheme@(srfi srfi-19)> ,trace (current-time-monotonic) 273413001> trace: (current-time-monotonic) trace: | (current-time-tai) trace: | | (gettimeofday) trace: | | (1500195308 . 670560) trace: | | (leap-second-delta 1500195308) trace: | | 36 trace: | (make-time time-tai 670560000 1500195344) trace: | (time-normalize! #<time type: time-tai nanosecond: 670560000 second: 1500195344>) trace: | | (abs 670560000) trace: | | 670560000 trace: | #<time type: time-tai nanosecond: 670560000 second: 1500195344> trace: (make-time time-monotonic 1500195344 670560000) trace: (time-normalize! #<time type: time-monotonic nanosecond: 1500195344 second: 670560000>) trace: | (abs 1500195344) trace: | 1500195344 trace: | (split-real 1500195344) trace: | | (integer? 1500195344) trace: | | #t trace: | | (inexact->exact 1500195344) trace: | | 1500195344 trace: | 2 values: 1500195344 0 trace: #<time type: time-monotonic nanosecond: 500195344 second: 670560001>
pgpYcS_tfKKX8.pgp
Description: OpenPGP digital signature