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
baseDaysStandard
28
baseDaysExtended
35
Test vectors (9)
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 — N1 a full year is 28 calendar days
given calendarDaysWorked
365
given daysInYear
365
given extendedEntitlement
no
given daysTaken
0
expect baseDays
28
expect daysEntitled
28
Case 2 — A1 the authority's own example, first half: 28 ÷ 365 × 181 (it prints ~13,89; the stated arithmetic gives 13,8849, so 13,88 at two decimals)
given calendarDaysWorked
181
given daysInYear
365
given extendedEntitlement
no
given daysTaken
0
expect daysEntitled
13.88
Case 3 — A2 the authority's own example, second half: 35 ÷ 365 × 184 = 17,64 exactly as printed
given calendarDaysWorked
184
given daysInYear
365
given extendedEntitlement
yes
given daysTaken
0
expect daysEntitled
17.64
Case 4 — N2 the extended entitlement over a full year is 35
given calendarDaysWorked
365
given daysInYear
365
given extendedEntitlement
yes
given daysTaken
0
expect baseDays
35
expect daysEntitled
35
Case 5 — N3 half a year is half the entitlement
given calendarDaysWorked
182.5
given daysInYear
365
given extendedEntitlement
no
given daysTaken
0
expect daysEntitled
14
Case 6 — N4 a leap year divides by 366
given calendarDaysWorked
366
given daysInYear
366
given extendedEntitlement
no
given daysTaken
0
expect daysEntitled
28
Case 7 — N5 no days employed earns nothing
given calendarDaysWorked
0
given daysInYear
365
given extendedEntitlement
no
given daysTaken
0
expect daysEntitled
0
Case 8 — N6 days already taken come off the remainder
given calendarDaysWorked
365
given daysInYear
365
given extendedEntitlement
no
given daysTaken
10
expect daysRemaining
18
Case 9 — N7 taking more than the entitlement never goes negative
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.