dest->tv_sec = mktime64(year, src.month, src.day, src.hour, src.minute,
                        src.second);
        dest->tv_sec -= offset * 60;
-       dest->tv_nsec = 1000 * (src.centiseconds * 10000 +
-                       src.hundredsOfMicroseconds * 100 + src.microseconds);
+
        /*
         * Sanitize nanosecond field since reportedly some filesystems are
         * recorded with bogus sub-second values.
         */
-       dest->tv_nsec %= NSEC_PER_SEC;
+       if (src.centiseconds < 100 && src.hundredsOfMicroseconds < 100 &&
+           src.microseconds < 100) {
+               dest->tv_nsec = 1000 * (src.centiseconds * 10000 +
+                       src.hundredsOfMicroseconds * 100 + src.microseconds);
+       } else {
+               dest->tv_nsec = 0;
+       }
 }
 
 void