Calendar-safe period math (UTC). Month/year arithmetic clamps the day to
the target month's length: Jan 31 + 1 month = Feb 28 (29 in leap years) —
monthly subscriptions anchored on the 31st must not skip February.
anchorDay (1-31, month/year only) computes the target day as
min(anchorDay, month length) so a clamped month never erodes the anchor
(Feb 28 with anchor 31 -> Mar 31, not Mar 28); omitted, the day advances
from fromIso's own day, clamped forward.
Calendar-safe period math (UTC). Month/year arithmetic clamps the day to the target month's length: Jan 31 + 1 month = Feb 28 (29 in leap years) — monthly subscriptions anchored on the 31st must not skip February.
anchorDay(1-31, month/year only) computes the target day as min(anchorDay, month length) so a clamped month never erodes the anchor (Feb 28 with anchor 31 -> Mar 31, not Mar 28); omitted, the day advances fromfromIso's own day, clamped forward.