Civil dates, not elapsed hours
DueRule represents a date as a validated Gregorian year, month, and day. Arithmetic advances by civil dates in UTC-safe form, avoiding daylight-saving changes that can distort elapsed-hour calculations.
Add and Subtract
- Magnitude must be a whole number from 0 through 10,000.
- Zero returns the starting date unchanged.
- The start is excluded by default and counts only when inclusion is selected and no exclusion applies.
Between
- The range is forward-only.
- The default excludes the start and includes the end.
- At most 20,000 civil days may be traversed.
Exclusions and overlaps
A date is excluded once when any reason applies. The trace still preserves every reason, including a closure that overlaps a non-working weekday or another closure.
Fixture parity
The web engine is implemented independently in TypeScript. It must pass the same versioned JSON cases as the Foundation-only iOS engine. A rules change begins with fixture changes and is never promoted silently.
Corrections
Report a suspected calendar or explanation error through Support. Include the public profile, dates, result, and source concern—never confidential matter details.