
Maintenance
Part of Who actually publishes the state calendars that set a deadline?
The set formula for combining closure layers into a single workday count
Set rules for layering closure calendars into a workday count: rest days first, then the union of every applicable list, with a hypothetical worked March example.
Layering calendars is not harder arithmetic. It is the same count with a bigger closure set, and the whole difficulty is in building that set correctly and being able to explain it afterward.
Nothing here computes for you. It gives the order of operations, the set rules, and worked figures you can reproduce.
What to take away
- Remove rest days first, then remove the union of every closure list that applies. Order matters only in that a rest day already removed cannot be removed again.
- Keep each layer as its own list. Merging them at rest destroys the only record of why a day was closed.
- Overlap is normal and harmless. A day closed by two layers is one closed day, and a set union says so without any special handling.
The order of operations
open(span) = { d in span : weekday(d) not in R }
minus ( C_national union C_regional union C_local union C_own )
Rest days come out first because they are a property of the week rather than of a list. Everything else is a union of date sets, and union is the right operator because it is idempotent: adding the same date twice changes nothing, which is exactly what you want when two layers name the same day.
Counting the union of dates rather than summing the sizes of the lists is the whole fix, and it is the same property that makes a retried operation safe.
Worked example (hypothetical)
A hypothetical arrangement, used only to show the arithmetic. The March table is not any jurisdiction's actual calendar.
Order of Operations
- Start with open days in span
- Remove weekend rest days
- Union all closure lists
- Subtract union from open days
Take March 2027, a Saturday and Sunday weekend. The month has 23 weekdays. Suppose one national closure falls on Wednesday the 10th, and a regional layer adds Wednesday the 17th and also repeats the 10th.
Worked example
Closure dates in force
- Rest days only
- none
- National
- the 10th
- National and regional
- the 10th and the 17th
Open days in March
- Rest days only
- 23
- National
- 22
- National and regional
- 21
The regional layer names two dates and removes one day, because one of its dates was already gone. A system that subtracted two would report 20, and 20 is not a defensible answer for any arrangement of those inputs.
The same arrangement applies to a deadline rather than a count: ten business days after Friday the 5th is Friday the 19th with no closures, Monday the 22nd with the national layer, and Tuesday the 23rd with both.
Each added closure pushes the answer by one open day. That push lands on a Monday or Tuesday because the weekend absorbs the shift. The day-stepping arithmetic behind that is under adding business days.
One real set, for reference. The U.S. Office of Personnel Management publishes the federal holiday schedule, and its 2025 list has 11 days, all of them on weekdays.
Federal holiday, 2025
| Federal holiday, 2025 | Date | Weekday |
|---|---|---|
| New Year's Day | January 1 | Wednesday |
| Martin Luther King, Jr. Day | January 20 | Monday |
| Washington's Birthday | February 17 | Monday |
| Memorial Day | May 26 | Monday |
| Juneteenth | June 19 | Thursday |
| Independence Day | July 4 | Friday |
| Labor Day | September 1 | Monday |
| Columbus Day | October 13 | Monday |
| Veterans Day | November 11 | Tuesday |
| Thanksgiving Day | November 27 | Thursday |
| Christmas Day | December 25 | Thursday |
2025 has 261 weekdays. Remove the 11 federal days and 250 open days remain. No observed-date shift applies, because no listed day falls on a weekend in 2025.
Keep the layers separate
Merging the lists at rest saves nothing and costs the ability to answer three questions: which layer closed a given day, which layer changed when a count moved, and which layers apply to a different office in the same organization.
Store each list with its own publisher, scope and retrieval date, and take the union at the moment of calculation. The union is cheap. Reconstructing a merged list into its parts is not possible at all.
| Layer | Typical publisher | Typical scope |
|---|---|---|
| National | The body named in the enacting instrument | Everyone, or one class of body |
| Regional | A sub-national government | That region |
| Local | A city or a court district | That district |
| Organizational | The employer or the counterparty | One organization |
The distinction between a layer's publisher and the instrument that enacted its days is set out under how national closure lists are made.
Intersection is a different question
Union answers "which days is nothing open". Intersection answers a question about two parties: which days are both of them open. Those are different sets and they are not each other's opposites.
For a deadline where two offices must both act, the open set is the intersection of their open sets. That equals removing the union of their closures and their combined rest days.
For a hand-off where either can act, it is the union of their open sets. Which applies is a decision about the obligation, not the calendar, and it should be written down where someone can disagree.
The scope question the formula cannot answer
The formula takes a list of lists. It cannot tell you which lists belong in that list, and that is the hard part.
A closure that binds courts does not necessarily bind banks. A regional closure may apply to public offices and not to private employers.
Whoever publishes each layer states its scope. Applying a layer outside that scope produces a count that is confidently and unarguably wrong. The reasoning about who publishes what is under state and regional calendars, and the underlying legal category of a working day is under business day.
Where to fetch each layer's list:
The scope question
- Nationalthe U.S. Office of Personnel Management publishes the federal holiday schedule. State legislatures publish their statutory holiday lists.
- State courtseach state's administrative office of the courts publishes closure orders that bind court business. California publishes its court holidays through the Judicial Council of California.
- Localcity, county and school district sites publish office and facility closures.
- Organizationalthe employer or the counterparty publishes its own calendar.
Where the counting is in hours rather than days, a layer can also shorten a day rather than remove it, and that case has no representation at day resolution. It is under working hours. The base weekday count that all of this subtracts from is under counting a month.
When the count is in days, a partial-day or hour-based closure is held as a note against that date rather than as a removal, unless it covers the whole working day.
Common questions
Does the order of the layers matter?
Not for the result. It matters for the record: the layer that first removed a day is worth storing, because it is what someone will ask about.
What if two layers disagree about whether a day is closed?
They cannot, in the union model. A day is closed if any applicable layer closes it. Disagreement is really a scope question: one of the layers does not apply to your obligation.
How many layers is too many?
There is no arithmetic limit. The practical limit is how many you can name a publisher and a retrieval date for, and a layer without those cannot be defended.
Can a layer add an open day rather than remove one?
Only if the obligation says so, and it is unusual. Modeling it needs an explicit exception rather than a negative closure, because a negative entry in a union set has no meaning.







