diff --git a/changelog.d/fl-liheap-cooling.fixed.md b/changelog.d/fl-liheap-cooling.fixed.md new file mode 100644 index 00000000000..a8d2671b844 --- /dev/null +++ b/changelog.d/fl-liheap-cooling.fixed.md @@ -0,0 +1 @@ +Florida LIHEAP Home Energy benefit now pays households that pay their own electricity bill for cooling, including homes without heating and subsidized tenants with heat in the rent. diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 0f74596fd68..a41686ef719 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -1164,7 +1164,7 @@ programs: full_name: Florida Low Income Home Energy Assistance Program variable: fl_liheap parameter_prefix: gov.states.fl.commerce.liheap - notes: Regular heating for FY2025-FY2026; FY2026 limits use 60% of state median income for every size, departing from contract wording for large households and from the printed size-13 row. Crisis, cooling, weatherization and equipment assistance are out of scope. + notes: Regular Home Energy benefit for FY2025-FY2026, covering heating and also households that pay their own electricity bill for cooling; FY2026 limits use 60% of state median income for every size, departing from contract wording for large households and from the printed size-13 row. Crisis, weatherization and equipment assistance are out of scope. - state: IL status: complete name: Illinois LIHEAP diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.yaml index 1b671ea64bb..ea333273002 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.yaml @@ -324,3 +324,129 @@ has_heating_expense: [true, false] output: fl_liheap_eligible: [true, false] + +# A home without heating qualifies through cooling: the one non-crisis Home +# Energy benefit per 12 months covers heating or cooling (R. 73C-26.022(2)(a); +# manual 200 P and Q, page 8), and electricity is a home energy type +# (R. 73C-26.022(6)). Electricity of 1_873 a year is EIA's 2024 Florida average +# residential bill of 156.09 a month. Wages of 14_820 are part time at the +# Florida minimum wage, as in Case 7; 35_360 is full time at 17.00 an hour. +- name: Case 8, a home without heating that pays its own electricity bill for cooling is eligible. + period: 2026 + input: + people: + person1: + age: 40 + employment_income: 14_820 + spm_units: + spm_unit: + members: [person1] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + # 14,820 <= 32,155; no heating fuel, a cooling cost and an electricity bill of 1,873 > 0 + fl_liheap_eligible: true + +- name: Case 9, a cooling-only household with income above the limit is ineligible. + period: 2026 + input: + people: + person1: + age: 40 + employment_income: 35_360 + spm_units: + spm_unit: + members: [person1] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + # 35,360 > 32,155 and no categorical receipt + fl_liheap_eligible: false + +- name: Case 10, a home without heating that reports cooling costs but no electricity bill is ineligible. + period: 2026 + input: + people: + person1: + age: 40 + employment_income: 14_820 + spm_units: + spm_unit: + members: [person1] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 0 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + # No electricity bill to show responsibility for the home energy cost + fl_liheap_eligible: false + +- name: Case 11, an unspecified heating fuel with cooling costs and an electricity bill is ineligible. + period: 2026 + input: + people: + person1: + age: 40 + employment_income: 14_820 + spm_units: + spm_unit: + members: [person1] + heating_type: UNSPECIFIED + heat_expense_included_in_rent: false + has_cooling_expense: true + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + # heating_type is required; UNSPECIFIED does not open the cooling path + fl_liheap_eligible: false + +# A household with a heating fuel but no heating obligation is still responsible +# for part of its home heating and cooling costs when it pays its own +# electricity bill for cooling (700.01 E, page 23; 900.08 A, page 43). The +# first household is in subsidized housing with gas heat included in the rent; +# the second heats with gas outside the rent but reports no heating obligation, +# as in Case 7. Wages and electricity are as in Case 8. +- name: Case 12, a heated home without a heating obligation that pays its own electricity bill for cooling is eligible. + period: 2026 + input: + state_code: [FL, FL] + age: [40, 40] + immigration_status: [CITIZEN, CITIZEN] + ssi: [0, 0] + fl_tca: [0, 0] + snap: [0, 0] + employment_income: [14_820, 14_820] + receives_housing_assistance: [true, false] + heating_type: [NATURAL_GAS, NATURAL_GAS] + gas_expense: [0, 1_200] + heat_expense_included_in_rent: [true, false] + has_heating_expense: [false, false] + has_cooling_expense: [true, true] + pre_subsidy_electricity_expense: [1_873, 1_873] + output: + # 14,820 <= 32,155; a cooling cost and an electricity bill of 1,873 > 0 + fl_liheap_eligible: [true, true] diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/fl_liheap.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/fl_liheap.yaml index b6730dc1a53..3fcb29d83e2 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/fl_liheap.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/commerce/liheap/fl_liheap.yaml @@ -979,3 +979,96 @@ fl_liheap_income_limit: [103_148, 103_148, 103_148] fl_liheap_eligible: [true, true, false] fl_liheap: [200, 200, 0] + +# A home without heating that pays its own electricity bill for cooling +# receives the same fuel-neutral Home Energy matrix award (R. 73C-26.022(2)(a); +# manual 700.01C, page 23). Wages of 29_120 are full time at the 14.00 Florida +# minimum wage; electricity of 1_873 a year is EIA's 2024 Florida average +# residential bill of 156.09 a month. +- name: Case 29, a cooling-only single parent with a young child receives the band two base and the child addition. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 31 + employment_income: 29_120 + person2: + age: 7 + person3: + age: 3 + spm_units: + spm_unit: + members: [person1, person2, person3] + heating_type: NONE + has_cooling_expense: true + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1, person2, person3] + state_code: FL + output: + fl_liheap_eligible: true + # Size 3 bands: 25,972 < 29,120 <= 36,360 -> band 2 base 300, plus 150 for + # the child aged 3 + fl_liheap: 450 + +- name: Case 30, a home without heating and without cooling costs receives nothing. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + employment_income: 14_820 + spm_units: + spm_unit: + members: [person1] + heating_type: NONE + has_cooling_expense: false + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + fl_liheap_eligible: false + fl_liheap: 0 + +# A subsidized household with gas heat included in the rent pays its own +# electricity bill for cooling, so it is responsible for part of its home +# heating and cooling costs (manual 700.01 E, page 23) and receives the same +# award with no deduction. Wages of 14_820 are part time at the Florida minimum +# wage; electricity of 1_873 a year is EIA's 2024 Florida average residential +# bill of 156.09 a month. +- name: Case 31, a subsidized household with heat in the rent that pays for cooling receives the band one base. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + employment_income: 14_820 + spm_units: + spm_unit: + members: [person1] + heating_type: NATURAL_GAS + heat_expense_included_in_rent: true + receives_housing_assistance: true + gas_expense: 0 + has_cooling_expense: true + pre_subsidy_electricity_expense: 1_873 + fl_tca: 0 + snap: 0 + households: + household: + members: [person1] + state_code: FL + output: + fl_liheap_eligible: true + # Size 1 band one: 14,820 <= 50% x 32,155 -> base 350 + fl_liheap: 350 diff --git a/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py b/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py index f02d08a898a..4861471e1c0 100644 --- a/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py +++ b/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py @@ -6,15 +6,17 @@ class fl_liheap_eligible(Variable): value_type = bool entity = SPMUnit definition_period = YEAR - label = "Florida LIHEAP regular heating eligibility" + label = "Florida LIHEAP regular home energy eligibility" defined_for = StateCode.FL reference = ( "https://www.law.cornell.edu/uscode/text/42/8624#b_2_B", - # PDF pages 5, 8, 45 - "https://liheapch.acf.gov/docs/2026/state-plans/FL_Plan_2026.pdf#page=5", + "https://www.law.cornell.edu/regulations/florida/Fla-Admin-Code-Ann-R-73C-26-022", + "https://www.law.cornell.edu/regulations/florida/Fla-Admin-Code-Ann-R-73C-26-023", + # PDF pages 4-5, 8, 45 + "https://liheapch.acf.gov/docs/2026/state-plans/FL_Plan_2026.pdf#page=4", # PDF pages 8-9 "https://liheapch.acf.gov/docs/2025/state-plans/FL_Plan_2025.pdf#page=8", - # PDF pages 4, 23, 39, 41, 43, 47-48, 50-51 + # PDF pages 4, 8, 23, 39, 41, 43, 47-48, 50-51 "https://liheapch.acf.gov/sites/default/files/webfiles/docs/2023/manuals/FL_PolicyManual_2023.pdf#page=4", # PDF pages 12-13 "https://www.pbcgov.com/pubInf/Agenda/20260106/3E2.pdf#page=12", @@ -73,6 +75,23 @@ def formula(spm_unit, period, parameters): fuel_qualifies = (heating_type != types.NONE) & ( heat_in_rent | (heating_type != types.UNSPECIFIED) ) + # The one non-crisis benefit per 12 months (R. 73C-26.022(2)(a)) is a + # Home Energy benefit for heating or cooling (manual 200 P and Q, page + # 8), and electricity is a home energy type (R. 73C-26.022(6)). An + # applicant responsible for all or part of its home heating and cooling + # costs is eligible (700.01 E, page 23; 900.08 A, page 43). So a + # household with any reported heating type, including a home without + # heating or one with heat in subsidized rent, qualifies when it pays + # its own electricity bill for cooling. UNSPECIFIED does not. Cooling + # wholly in the rent with no obligation of its own pays nothing, as + # R. 73C-26.023(4) provides. + cooling_only = ( + (heating_type != types.UNSPECIFIED) + & spm_unit("has_cooling_expense", period) + & (spm_unit("pre_subsidy_electricity_expense", period) > 0) + ) return ( - (size > 0) & (income_eligible | categorical) & responsible & fuel_qualifies + (size > 0) + & (income_eligible | categorical) + & ((responsible & fuel_qualifies) | cooling_only) ) diff --git a/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_income_limit.py b/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_income_limit.py index 18fa752f7fe..ff657ada71f 100644 --- a/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_income_limit.py +++ b/policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_income_limit.py @@ -8,7 +8,7 @@ class fl_liheap_income_limit(Variable): entity = SPMUnit definition_period = YEAR unit = USD - label = "Florida LIHEAP annual heating maximum income value before rounding" + label = "Florida LIHEAP annual home energy maximum income value before rounding" defined_for = StateCode.FL reference = ( "https://liheapch.acf.gov/docs/2026/state-plans/FL_Plan_2026.pdf#page=8", diff --git a/policyengine_us/variables/gov/states/fl/commerce/liheap/fl_liheap.py b/policyengine_us/variables/gov/states/fl/commerce/liheap/fl_liheap.py index 3e1a5e7312e..fcd9836df00 100644 --- a/policyengine_us/variables/gov/states/fl/commerce/liheap/fl_liheap.py +++ b/policyengine_us/variables/gov/states/fl/commerce/liheap/fl_liheap.py @@ -7,7 +7,7 @@ class fl_liheap(Variable): entity = SPMUnit definition_period = YEAR unit = USD - label = "Florida LIHEAP regular heating assistance" + label = "Florida LIHEAP regular home energy assistance" defined_for = StateCode.FL reference = ( "https://liheapch.acf.gov/docs/2026/benefits-matricies/FL_BenefitMatrix_Heat-Cool_2026.pdf", diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 9d02eda84fd..3948257adbb 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2489,9 +2489,12 @@ candidates: from: 2025 to: 2026 type: federal-fiscal - question: Does including energy costs in unsubsidized rent permit Florida LIHEAP eligibility or prevent the required - landlord certification? + question: Is a Florida household whose energy costs are wholly included in unsubsidized rent, with no obligation of its own, + eligible for LIHEAP? sources: + - kind: regulation + citation: Fla. Admin. Code R. 73C-26.023(4) + url: https://www.law.cornell.edu/regulations/florida/Fla-Admin-Code-Ann-R-73C-26-023 - kind: manual citation: Florida LIHEAP manual parts 900.01A p.39 and 100.01 p.4 url: https://liheapch.acf.gov/sites/default/files/webfiles/docs/2023/manuals/FL_PolicyManual_2023.pdf#page=4 @@ -2499,28 +2502,35 @@ candidates: citation: Florida LIHEAP manual part 1100.04B(1), p.47 url: https://liheapch.acf.gov/sites/default/files/webfiles/docs/2023/manuals/FL_PolicyManual_2023.pdf#page=47 readings: - statute: No statute is supplied; parts 900.01A and 100.01 allow utilities in unsubsidized rent and payment to - the landlord. - other: Part 1100.04B(1) requests a statement that home energy costs are not included in rent. + statute: No statute is supplied; R. 73C-26.023(4) says "The applicant is not eligible for assistance if home energy + costs are totally included in the rent and the applicant has no obligation to pay any portion of the energy costs", + and part 1100.04B(1) requests a statement that home energy costs are not included in rent. + other: Parts 900.01A and 100.01 allow "non-subsidized rent that includes utilities" and payment to the landlord. + example: In 2026, an unsubsidized renter aged 40 with $14,820 of wages, gas heat included in the rent and no bill of its + own receives $350 under part 900.01A and $0 under R. 73C-26.023(4); the same renter with no heating and cooling in the + rent receives $0 under the rule and $350 under part 900.01A. pe_us: follows: unknown code: - policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/9969 - state: unreviewed - note: 'PE-US follows parts 900.01A and 100.01: heat in unsubsidized rent qualifies (fl_liheap_eligible.py). Verify whether the 1100.04B(1) statement applies to a narrower payment situation.' + - https://github.com/PolicyEngine/policyengine-us/pull/10740 + state: open + note: 'The heating route follows parts 900.01A and 100.01: heat in unsubsidized rent qualifies (fl_liheap_eligible.py). + The cooling route added by PR 10740 requires the household''s own electricity bill, so cooling wholly in the rent pays + $0, as R. 73C-26.023(4) reads. A ruling is needed on the heating route.' - id: us-fl:liheap-fy2026-payment-range program: liheap years: from: 2026 to: 2026 type: federal-fiscal - question: Do Florida's FY2026 regular heating payments range from the plan's estimated $400 to $1,350 or from the - October 2025 payment matrix's $200 to $700? + question: Does Florida's FY2026 Home Energy benefit, for heating or cooling, range from the plan's estimated $400 to $1,350 + or from the October 2025 payment matrix's $200 to $700? sources: - kind: guidance - citation: FY2026 LIHEAP State Plan item 2.6, p.9 + citation: "FY2026 LIHEAP State Plan items 2.6 (heating) and 3.6 (cooling) #page 9,11" url: https://liheapch.acf.gov/docs/2026/state-plans/FL_Plan_2026.pdf#page=9 - kind: form citation: October 2025 LIHEAP payment matrix @@ -2534,7 +2544,7 @@ candidates: readings: statute: No statute is supplied; the manual and contract D(10)b require the current matrix, which pays $200 to $700 with all additions. - other: Plan item 2.6 prints the FY2025 estimates, a $400 minimum and a $1,350 maximum. + other: Plan items 2.6 and 3.6 print the FY2025 estimates, a $400 minimum and a $1,350 maximum. pe_us: follows: unknown code: @@ -2542,9 +2552,11 @@ candidates: - policyengine_us/variables/gov/states/fl/commerce/liheap/fl_liheap.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/9969 + - https://github.com/PolicyEngine/policyengine-us/pull/10740 state: unreviewed - note: PE-US follows the October 2025 matrix (base_amount.yaml, fl_liheap.py). The draft FFY2027 plan, section 2.6, - estimates a $200 minimum and a $700 maximum, matching it. + note: PE-US follows the October 2025 matrix (base_amount.yaml, fl_liheap.py) for heating and for the cooling route PR + 10740 adds, which can pay $350, below the printed $400 minimum. The draft FFY2027 plan, section 2.6, estimates a $200 + minimum and a $700 maximum, matching it. - id: us-fl:liheap-income-floor-vs-smi-limit program: liheap years: