guarantee_credit (policyengine_uk/variables/gov/dwp/pension_credit/guarantee_credit/guarantee_credit.py) is max_(0, minimum_guarantee - pension_credit_income) * is_guarantee_credit_eligible, and is_guarantee_credit_eligible is only income < minimum_guarantee. Neither has a State Pension Credit qualifying-age condition. Only pension_credit_entitlement (defined_for = "is_pension_credit_eligible") applies it.
On the Enhanced FRS 2024-25 (policyengine-uk-data-private 1.57.4), the weighted sum of guarantee_credit is £104bn in 2024-25, rising to £126bn in 2030-31. Gated by is_pension_credit_eligible it is £6.7bn to £8.3bn (runs for #1922, 2026-09-30). A variable labelled "Guarantee Credit" that sums to fifteen times the real amount misleads analysts and consumers. #1956 is one such consumer (targeted childcare), fixed in #1987. savings_credit has the same pattern.
Fix: either add defined_for = "is_pension_credit_eligible" (or the qualifying-age test) to guarantee_credit and savings_credit, or relabel them as pre-eligibility amounts. Check every consumer first: pension_credit_entitlement, Savings Credit, HB/CTR income rules, targeted childcare. Add YAML tests for a low-income working-age benefit unit (0) and a pension-age one (positive), and confirm in a real microsimulation that pension_credit and pension_credit_entitlement are unchanged.
guarantee_credit(policyengine_uk/variables/gov/dwp/pension_credit/guarantee_credit/guarantee_credit.py) ismax_(0, minimum_guarantee - pension_credit_income) * is_guarantee_credit_eligible, andis_guarantee_credit_eligibleis onlyincome < minimum_guarantee. Neither has a State Pension Credit qualifying-age condition. Onlypension_credit_entitlement(defined_for = "is_pension_credit_eligible") applies it.On the Enhanced FRS 2024-25 (policyengine-uk-data-private 1.57.4), the weighted sum of
guarantee_creditis £104bn in 2024-25, rising to £126bn in 2030-31. Gated byis_pension_credit_eligibleit is £6.7bn to £8.3bn (runs for #1922, 2026-09-30). A variable labelled "Guarantee Credit" that sums to fifteen times the real amount misleads analysts and consumers. #1956 is one such consumer (targeted childcare), fixed in #1987.savings_credithas the same pattern.Fix: either add
defined_for = "is_pension_credit_eligible"(or the qualifying-age test) toguarantee_creditandsavings_credit, or relabel them as pre-eligibility amounts. Check every consumer first:pension_credit_entitlement, Savings Credit, HB/CTR income rules, targeted childcare. Add YAML tests for a low-income working-age benefit unit (0) and a pension-age one (positive), and confirm in a real microsimulation thatpension_creditandpension_credit_entitlementare unchanged.