I read all the slice and I like it (even if they are place where I do not get fully it :).
I'm dead. So may be this is obvious but I do not understand the or: logic
If the seconds is negative I do not understand what is happening.
normalizeSecondsAndNanos
(NanosInSecond <= nanos or: [ nanos < 0 ])
ifTrue: [
seconds := seconds + (nanos // NanosInSecond).
nanos := nanos \\ NanosInSecond].
(SecondsInDay <= seconds or: [ seconds < 0 ])
ifTrue: [
julianDayNumber := julianDayNumber + (seconds // SecondsInDay).
seconds := seconds \\ SecondsInDay].