Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fix-10209-ms-tanf-deductions.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Deduct Mississippi TANF's $90 work expense and actual dependent care costs from each earner's earnings, and do not issue benefits under $10 a month.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
description: Mississippi deducts this amount of monthly work expenses from each earner's earned income under the Temporary Assistance for Needy Families program.

values:
2017-01-01: 90

metadata:
unit: currency-USD
period: month
label: Mississippi TANF work expense deduction
reference:
- title: "MDHS TANF Policy Manual, Volume III (July 2019), Chapter 4 - Earned Income Disregards and Chapter 6 - Budgeting Net Monthly Earned Income #page 370,470"
href: https://www.mdhs.ms.gov/wp-content/uploads/2019/07/TANF-Manual-Revised_7.19.pdf#page=370
- title: "Miss. Admin. Code tit. 18, pt. 13, TANF Policy Manual, Volume III, Chapter 4 - Earned Income Disregards and Chapter 6 - Budgeting Net Monthly Earned Income #page 362,469"
href: https://www.sos.ms.gov/adminsearch/ACCode/00000330c.pdf#page=362
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
description: Mississippi does not issue Temporary Assistance for Needy Families program payments below this amount.

values:
2017-01-01: 10

metadata:
unit: currency-USD
period: month
label: Mississippi TANF minimum payment
reference:
- title: "MDHS TANF Policy Manual, Volume III (July 2019), Chapter 6 - Minimum Benefit and Chapter 15 - Table II #page 459,888"
href: https://www.mdhs.ms.gov/wp-content/uploads/2019/07/TANF-Manual-Revised_7.19.pdf#page=459
- title: "Miss. Admin. Code tit. 18, pt. 13, TANF Policy Manual, Volume III, Chapter 6 - Minimum Benefit and Chapter 15 - Table II #page 459,970"
href: https://www.sos.ms.gov/adminsearch/ACCode/00000330c.pdf#page=459
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,15 @@
# - Income limits by size: 1=$627, 2=$851, 3=$1,074, 4=$1,298, 5=$1,523
# - Payment standards: First person $200, second $36, each additional $24
# - Resource limit: $2,000
# - Benefit: Maximum Payment Standard - Countable Income
# - Countable earned income: each earner's earnings less $90, then less
# actual dependent care costs
# - Benefit: Maximum Payment Standard - Countable Income; no benefit under $10
#
# The benefit formula is PolicyEngine's current one. MDHS pays 60% of the
# deficit (need standard less net income), up to the maximum (Title 18,
# Part 13, Chapter 6, Computing Benefit; Chapter 15, Table II). That change
# is tracked in PolicyEngine/policyengine-us#10269; the Case 9 and Case 10
# comments give the amounts under the 60% rule.

- name: Case 1, single parent with one child, no income, receives maximum benefit.
period: 2026-01
Expand Down Expand Up @@ -304,3 +312,68 @@
# $500 <= $1,522.55 = true
ms_tanf_income_eligible: true
ms_tanf_eligible: true

- name: Case 9, parent of two with $200 a month of earnings gets the $90 work expense deduction.
period: 2026
input:
people:
parent:
age: 30
employment_income_before_lsr: 2_400
child1:
age: 5
is_tax_unit_dependent: true
child2:
age: 2
is_tax_unit_dependent: true
spm_units:
spm_unit:
members: [parent, child1, child2]
spm_unit_cash_assets: 0
tax_units:
tax_unit:
members: [parent, child1, child2]
households:
household:
members: [parent, child1, child2]
state_code: MS
output:
# Monthly countable income: 200 - 90 = 110
ms_tanf_countable_income: 110 * 12
# PolicyEngine's current formula: (260 - 110) * 12 = 1_800
# 60% of the deficit (#10269): min(floor(0.6 * (581 - 110)), 260) * 12
# = min(282, 260) * 12 = 3_120
ms_tanf: 1_800

- name: Case 10, parent of two with $200 a month of earnings and $50 a month of child care.
period: 2026
input:
people:
parent:
age: 30
employment_income_before_lsr: 2_400
child1:
age: 5
is_tax_unit_dependent: true
child2:
age: 2
is_tax_unit_dependent: true
spm_units:
spm_unit:
members: [parent, child1, child2]
spm_unit_cash_assets: 0
childcare_expenses: 600
tax_units:
tax_unit:
members: [parent, child1, child2]
households:
household:
members: [parent, child1, child2]
state_code: MS
output:
# Monthly countable income: 200 - 90 - 50 = 60
ms_tanf_countable_income: 60 * 12
# PolicyEngine's current formula: (260 - 60) * 12 = 2_400
# 60% of the deficit (#10269): min(floor(0.6 * (581 - 60)), 260) * 12
# = min(312, 260) * 12 = 3_120
ms_tanf: 2_400
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
# Mississippi TANF benefit calculation tests
# Benefit = Maximum Payment Standard - Countable Income
# If countable income exceeds payment standard, benefit = $0
# No benefit is issued when the monthly benefit is less than $10
# Must be eligible (ms_tanf_eligible) to receive any benefit
#
# These cases test PolicyEngine's current formula. MDHS pays 60% of the
# deficit (need standard less net income), up to the maximum (Title 18,
# Part 13, Chapter 6, Computing Benefit; Chapter 15, Table II). That change
# is tracked in PolicyEngine/policyengine-us#10269 and will change these
# expectations.

- name: Case 1, ineligible household receives zero benefit.
period: 2026-01
Expand Down Expand Up @@ -112,13 +119,29 @@
# $200 - $50 = $150
ms_tanf: 150

- name: Case 11, high income reduces benefit to near zero.
- name: Case 11, benefit under the $10 minimum payment is not issued.
period: 2026-01
input:
state_code: MS
ms_tanf_eligible: true
ms_tanf_maximum_benefit: 260
ms_tanf_countable_income: 255
output:
# $260 - $255 = $5
ms_tanf: 5
# $260 - $255 = $5 < $10 minimum payment
# Under the 60% rule (#10269), countable income of 255 for a family of 3
# gives floor(0.6 * (581 - 255)) = 195; this case would then need
# countable income of 570: floor(0.6 * 11) = 6 < 10.
ms_tanf: 0

- name: Case 12, benefit equal to the $10 minimum payment is issued.
period: 2026-01
input:
state_code: MS
ms_tanf_eligible: true
ms_tanf_maximum_benefit: 260
ms_tanf_countable_income: 250
output:
# $260 - $250 = $10 >= $10 minimum payment
# Under the 60% rule (#10269), this case would need countable income of
# 564: floor(0.6 * 17) = 10.
ms_tanf: 10
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# Mississippi TANF countable earned income
# MDHS TANF Policy Manual, Volume III, Chapter 6, Budgeting Net Monthly
# Earned Income: deduct from each earner's monthly earnings (a) $90 for work
# expenses, then (b) the actual cost of dependent care.

- name: Case 1, no earnings.
period: 2026-01
input:
people:
parent:
age: 30
child:
age: 5
spm_units:
spm_unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: MS
output:
ms_tanf_countable_earned_income: 0

- name: Case 2, one earner, $90 work expense deduction.
period: 2026-01
input:
people:
parent:
age: 30
employment_income_before_lsr: 2_400
child:
age: 5
spm_units:
spm_unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: MS
output:
# 2_400 / 12 - 90 = 200 - 90 = 110
ms_tanf_countable_earned_income: 110

- name: Case 3, one earner with child care costs.
period: 2026-01
input:
people:
parent:
age: 30
employment_income_before_lsr: 2_400
child:
age: 5
spm_units:
spm_unit:
members: [parent, child]
childcare_expenses: 600
households:
household:
members: [parent, child]
state_code: MS
output:
# 200 - 90 - 600 / 12 = 200 - 90 - 50 = 60
ms_tanf_countable_earned_income: 60

- name: Case 4, two earners each get the $90 deduction.
period: 2026-01
input:
people:
parent1:
age: 30
employment_income_before_lsr: 6_000
parent2:
age: 32
employment_income_before_lsr: 3_600
child:
age: 5
spm_units:
spm_unit:
members: [parent1, parent2, child]
childcare_expenses: 1_200
households:
household:
members: [parent1, parent2, child]
state_code: MS
output:
# (500 - 90) + (300 - 90) - 1_200 / 12 = 410 + 210 - 100 = 520
ms_tanf_countable_earned_income: 520

- name: Case 5, earnings below $90 are fully deducted.
period: 2026-01
input:
people:
parent:
age: 30
employment_income_before_lsr: 720
child:
age: 5
spm_units:
spm_unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: MS
output:
# max(60 - 90, 0) = 0
ms_tanf_countable_earned_income: 0

- name: Case 6, dependent care above earnings does not reduce unearned income.
period: 2026-01
input:
people:
parent:
age: 30
employment_income_before_lsr: 2_400
alimony_income: 600
child:
age: 5
spm_units:
spm_unit:
members: [parent, child]
childcare_expenses: 3_600
households:
household:
members: [parent, child]
state_code: MS
output:
# max(200 - 90 - 300, 0) = 0
ms_tanf_countable_earned_income: 0
# 0 earned + 600 / 12 unearned
ms_tanf_countable_income: 50

- name: Case 7, the $90 deduction is floored for each earner, not for the unit.
period: 2026-01
input:
people:
parent1:
age: 30
employment_income_before_lsr: 720
parent2:
age: 32
employment_income_before_lsr: 3_600
child:
age: 5
spm_units:
spm_unit:
members: [parent1, parent2, child]
households:
household:
members: [parent1, parent2, child]
state_code: MS
output:
# max(60 - 90, 0) + (300 - 90) = 0 + 210 = 210
# (a floor on the pooled amount would give 360 - 180 = 180)
ms_tanf_countable_earned_income: 210

- name: Case 8, care costs for an incapacitated adult are deducted.
period: 2026-01
input:
people:
parent:
age: 30
employment_income_before_lsr: 6_000
spouse:
age: 32
care_expenses: 1_200
child:
age: 5
spm_units:
spm_unit:
members: [parent, spouse, child]
households:
household:
members: [parent, spouse, child]
state_code: MS
output:
# (500 - 90) - 1_200 / 12 = 410 - 100 = 310
ms_tanf_countable_earned_income: 310
16 changes: 15 additions & 1 deletion policyengine_us/variables/gov/states/ms/dhs/tanf/ms_tanf.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,24 @@ class ms_tanf(Variable):
reference = (
"https://www.mdhs.ms.gov/wp-content/uploads/2018/02/MDHS_TANF-Eligibility-Flyer.pdf",
"https://www.law.cornell.edu/regulations/mississippi/Miss-Code-tit-18-pt-19",
# PDF pages 459, 888
"https://www.mdhs.ms.gov/wp-content/uploads/2019/07/TANF-Manual-Revised_7.19.pdf#page=459",
# PDF pages 459, 970
"https://www.sos.ms.gov/adminsearch/ACCode/00000330c.pdf#page=459",
)

def formula(spm_unit, period, parameters):
p = parameters(period).gov.states.ms.dhs.tanf
maximum_benefit = spm_unit("ms_tanf_maximum_benefit", period)
countable_income = spm_unit("ms_tanf_countable_income", period)
# This pays the maximum benefit less countable income. Title 18,
# Part 13, Chapter 6 (Computing Benefit) and Chapter 15, Table II
# pay 60% of the deficit (need standard less net income), up to the
# maximum benefit. PolicyEngine/policyengine-us#10269 tracks that
# change.
benefit = max_(maximum_benefit - countable_income, 0)
return min_(benefit, maximum_benefit)
benefit = min_(benefit, maximum_benefit)
# MDHS TANF Policy Manual, Volume III, Chapter 6, Minimum Benefit,
# and Chapter 15, Table II: no benefit is issued when the monthly
# benefit is less than $10.
return where(benefit >= p.minimum_payment, benefit, 0)
Loading
Loading