I don't think the modulus will roll over the hour around the way you might be expecting. I think we need special handling if `hour < 0` to first do `24 + hour` or something like that.

Ideally we can set up unit tests for these roll-over scenarios to ensure I don't get jet-lagged and destroy this logic in July.