Just a bad reference to localOffset rather than the supplied offset in todayAtNanoSeconds:offset: (see below). Normally, todayAtMilliSeconds:offset: is called. The nanoSecond version is only used when a the call to nowWithOffset: results in the same tick value as the last one. This is what happens when you try to subtract tomorrow from today. Today ends up with a local offset. Changing the reference to aDuration fixes the problem. Doesn't help with the TestRunner chronology failures. I'll have a look at them.
todayAtNanoSeconds: nanoSecondsSinceMidnight offset: aDuration
"This is usually only during system startup..."
self waitForOffsets.
^ self basicNew
setJdn: DaysSinceEpoch
seconds: (nanoSecondsSinceMidnight // 1000000000)
nano: (nanoSecondsSinceMidnight \\ 1000000000 )
offset: self localOffset