You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Decide prior law after a bounded change to an uprated amount: freezes resume from the frozen amount #2430
After a bounded dated change to an amount uprated from an index (benefit rates, the Plan 2 student loan threshold, the NICs lower earnings limit and the like), policyengine-uk returns to the path the amount would have taken without the change (#2305). That matches a temporary modification. It doesn't match a freeze, and freezes are the more common Budget measure for these amounts.
Freezes resume from the frozen amount.
Welfare Reform and Work Act 2016 s11 (verified at legislation.gov.uk) kept the relevant sums "the same as it was in the tax year ending with 5 April 2016" for 2016-17 to 2019-20. It also excused the SSAA 1992 s150 review and up-rating order for those years.
The model's own files freeze and then uprate. For example, the LEL is £123 (2022) → £125 (SI 2025/288) → £129 (SI 2026/231).
Temporary modifications revert. The 2020 UC uplift, SI 2020/371 reg 3 (verified), had UC Regulations 2013 reg 36 "read as if" higher amounts were substituted "only for the remainder of the tax year beginning with 6th April 2020". That left the underlying amount, which the uprating orders kept raising.
Effect on Budget CI.
With today's rule, a reform freezing a benefit for two years scores savings only for those two years. Under statute, the lower path persists.
The review's probes: extending the Plan 2 freeze to 2032-33 gives 2033 the unfrozen path's £32,230.27, and freezing the LEL to 2029-30 jumps it back to £139.63 in 2030.
A dated reform cannot say which legal form a measure takes. This is a methodology call under cos d1344 (delegated to the Budget CI workstreams):
choose the default for uprated amounts. Resuming from the changed amount matches freezes, s150's uprating of "the sums" and the model's own files;
provide a way to express the other form, for example a temporary-modification marker, or stated values after the change.
The contract's bounded_change_on_uprated_benefit and uc_award_follows_the_standard_allowance cases (policyengine.py) encode today's reading, so they would change with it.
Found by the independent review of #2423, which decided the call for thresholds indexed from their own previous year only.
Activity
Keep a change to the tax years it covers, and record only the thresho…