The expressions above read these as $const. They are the figures the annual refresh replaces, so they live as data rather than being written into the formulas — which is what makes a year-on-year change a one-line diff instead of an edit to arithmetic.
Constant
Value
statutoryWeeks
5.6
daysCap
28
Test vectors (7)
Every case is executed against this model on each build, by the Java engine and independently by a JavaScript one. A mismatch of a single cent fails the build, so the page cannot ship advertising a figure the model no longer produces.
Case 1 — A1 three days a week is 16.8 days (GOV.UK’s own worked example)
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-12-31
given daysPerWeek
3
given daysTaken
0
expect daysEntitled
16.8
Case 2 — A2 a five-day week is the familiar 28 days
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-12-31
given daysPerWeek
5
given daysTaken
0
expect weeksEntitlement
5.6
expect daysEntitled
28
Case 3 — A3 the cap bites on a six-day week: 33.6 would be wrong
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-12-31
given daysPerWeek
6
given daysTaken
0
expect fullYearDays
28
expect daysEntitled
28
Case 4 — A4 half a leave year on a five-day week
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-06-30
given daysPerWeek
5
given daysTaken
0
expect presentDays
181
expect yearLengthDays
365
expect daysEntitled
13.9
Case 5 — A5 days already taken come off the remainder
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-12-31
given daysPerWeek
5
given daysTaken
8
expect daysEntitled
28
expect daysRemaining
20
Case 6 — A6 taking more than the entitlement never goes negative
given leaveYearStart
2026-01-01
given leaveYearEnd
2026-12-31
given workStart
2026-01-01
given workEnd
2026-12-31
given daysPerWeek
5
given daysTaken
40
expect daysRemaining
0
Case 7 — A7 joining partway through the leave year
The whole model as JSON — inputs, outputs, formulas, vectors and sources in one re-runnable document.
This model is published under CC BY 4.0: use it, adapt it, build on it, with attribution. The licence covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds are law, and nobody licenses those; the sources above are where they come from.