Skip to content

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Nov 10, 2025

Summary

Implements Michigan Family Independence Program (FIP), the state's TANF cash assistance program, with dual-test system and per-person deductions verified against BEM policy manuals.

Closes #6813

Status

  • Documentation collected
  • Parameters created (6 files)
  • Variables implemented (11 files)
  • Tests written (66 test cases across 8 files)
  • CI passing
  • Dual-test system implemented (20% initial, 50% benefit)
  • Per-person deduction logic verified
  • Formulas verified against BEM 518, 520, 503
  • Ready for review

Key Changes

Implementation Summary

  • 11 new variables for Michigan FIP benefit calculation
  • 6 parameter files with dual deduction rates and historical values
  • 66 comprehensive test cases across 8 test files (17 integration + 49 unit)
  • Dual-test system correctly separates eligibility from benefit calculation
  • All tests passing

Correct Formula (Per BEM 518 and BEM 520)

Earned Income Deduction (per person):
  Flat: $200 per working person
  Percentage: 20% OR 50% depending on purpose
  
Initial Eligibility (new applicants - BEM 520 Section C):
  - Uses 20% deduction rate (Qualifying Deficit Test)
  - Determines IF household qualifies
  
Benefit Calculation (everyone - BEM 520 Section D):
  - Uses 50% deduction rate (Issuance Deficit Test)
  - Determines HOW MUCH benefit
  - Applies to both new applicants and enrolled recipients
  
Countable Income = Sum(per-person countable earned) + gross unearned
Monthly Benefit = MAX(Payment Standard - Countable Income, 0)

Critical Implementation Details:

  1. Deductions apply per person (each worker gets their own $200)
  2. Initial eligibility test (20%) is separate from benefit calculation (50%)
  3. Once qualified, everyone gets benefits calculated with 50% rate

Files Added

Parameters (6 files)

policyengine_us/parameters/gov/states/mi/mdhhs/fip/
├── resource_limit.yaml
├── income/deductions/earned_income_disregard/
│   ├── flat_amount.yaml                            # $200
│   ├── initial_percent.yaml                        # 20% (eligibility only)
│   └── ongoing_percent.yaml                        # 50% (benefit calc, since 2011)
└── payment_standard/
    ├── amounts.yaml                                # Historical 2017 & 2025
    └── additional_person_increment.yaml            # $80→$95

Variables (11 files)

policyengine_us/variables/gov/states/mi/mdhhs/fip/
├── eligibility/
│   ├── mi_fip_eligible.py
│   ├── mi_fip_income_eligible.py                   # Dual-test logic!
│   └── mi_fip_resources_eligible.py
├── income/
│   ├── mi_fip_earned_income_after_deductions_person.py         # 50% (benefit)
│   ├── mi_fip_earned_income_after_deductions_initial_person.py # 20% (eligibility)
│   ├── mi_fip_countable_earned_income.py           # Uses adds pattern (50%)
│   ├── mi_fip_countable_earned_income_initial.py   # Uses adds pattern (20%)
│   ├── mi_fip_countable_income.py                  # Uses adds (50% version)
│   └── mi_fip_countable_income_initial.py          # Uses adds (20% version)
├── mi_fip.py
└── mi_fip_payment_standard.py

Tests (8 files, 66 test cases)

policyengine_us/tests/policy/baseline/gov/states/mi/mdhhs/fip/
├── eligibility/
│   ├── mi_fip_eligible.yaml                        # 5 tests
│   ├── mi_fip_income_eligible.yaml                 # 7 tests (tests both 20% & 50%)
│   └── mi_fip_resources_eligible.yaml              # 6 tests
├── income/
│   ├── mi_fip_countable_earned_income.yaml         # 8 tests (50% benefit calc)
│   └── mi_fip_countable_income.yaml                # 6 tests
├── integration.yaml                                # 17 integration tests
├── mi_fip.yaml                                     # 7 benefit tests
└── mi_fip_payment_standard.yaml                    # 10 payment tests

Example Calculations

New Applicant: Two-Step Process

Household: Family of 3, NEW applicant, $600/month earned

STEP 1: Initial Eligibility Test (20% deduction)
  Countable = $600 - [$200 + 20%×$400] = $600 - $280 = $320
  Payment Standard = $583
  $320 < $583 → PASSES (eligible for FIP)

STEP 2: Benefit Calculation (50% deduction)
  Countable = $600 - [$200 + 50%×$400] = $600 - $400 = $200
  Benefit = $583 - $200 = $383/month

Enrolled Recipient: One-Step Process

Household: Family of 3, ENROLLED, $1,000/month earned

Initial eligibility: Already passed (enrolled)

Benefit Calculation (50% deduction):
  Countable = $1,000 - [$200 + 50%×$800] = $1,000 - $600 = $400
  Payment Standard = $583
  Benefit = $583 - $400 = $183/month

Multiple Earners - Per-Person Deductions

Household: 2 parents + 2 children, ENROLLED
Income: $800 + $400 = $1,200 total

BEM 518: "Apply separately to each program group member"

Parent 1: $800 - [$200 + 50%×$600] = $300 countable
Parent 2: $400 - [$200 + 50%×$200] = $100 countable
Total countable = $400

Payment Standard (size 4) = $707  
Benefit = $707 - $400 = $307/month

Testing & Verification

Test Results

✅ All 66 tests passing
   - 17 integration tests  
   - 49 unit tests
   - 0 failures

Legal Verification

All formulas verified against:

  • ✅ BEM 518 (BPB 2023-013, effective 7-1-2023)
  • ✅ BEM 520 (BPB 2023-002, effective 1-1-2023)
  • ✅ BEM 503 (BPB 2025-022, effective 10-1-2025)
  • ✅ Michigan TANF State Plan 2017 (2008 frozen amounts)
  • ✅ Michigan TANF State Plan 2025 (2024 increased amounts)

Recent Formula Corrections

Commit History

  1. ✅ Per-person deduction logic (each worker gets own $200)
  2. ✅ Dual-test system (20% eligibility, 50% benefit)
  3. ✅ Historical payment standards (2008 & 2025)
  4. ✅ Proper use of adds pattern
  5. ✅ Verified against BEM manuals

🤖 Generated with Claude Code

Co-Authored-By: Claude [email protected]

hua7450 and others added 5 commits November 10, 2025 16:42
Starting implementation of Michigan TANF (Family Independence Program).
Documentation and parallel development will follow.

Fixes PolicyEngine#6794
Create integration tests for MI TANF (FIP) program covering:
- Single parent households with 1-4 children
- Different family sizes (1, 3, 4, 5 members)
- Various income levels (no income, low, moderate, high)
- Income eligibility boundaries (at and above thresholds)
- Benefit calculations with earned income disregards
- Mixed earned and unearned income scenarios
- Two-parent households with single and dual earners
- Out-of-state households (not eligible)

Tests validate payment standards, countable income calculations,
eligibility determination, and benefit amounts based on Michigan
TANF State Plan 2023 and RFT 210 (effective Jan 1, 2025).

Related to issue PolicyEngine#6813
…ard-coded values

This implementation provides complete Michigan TANF (FIP) functionality following all PolicyEngine-US coding standards.

Parameters created (7 files):
- payment_standard_eligible_grantee.yaml - Payment amounts by household size 1-7
- payment_standard_ineligible_grantee.yaml - Reduced payment amounts when grantee ineligible
- payment_standard_additional_per_person.yaml - Additional amount for household size 8+
- earned_income_disregard_fixed.yaml - Fixed $200 disregard amount
- earned_income_disregard_initial_rate.yaml - 20% disregard rate for initial eligibility
- earned_income_disregard_ongoing_rate.yaml - 50% disregard rate for ongoing benefits
- asset_limit.yaml - $15,000 asset limit (increased from $3,000 in 2019)

Variables implemented (10 files):
- mi_tanf.py - Main benefit calculation (Payment Standard - Countable Income)
- mi_tanf_eligible.py - Overall eligibility (income AND resources)
- mi_tanf_income_eligible.py - Income eligibility check
- mi_tanf_resources_eligible.py - Asset limit check
- mi_tanf_countable_income.py - Total countable income
- mi_tanf_countable_earned_income.py - Earned income after disregards
- mi_tanf_gross_earned_income.py - Total earned income (Person level)
- mi_tanf_gross_unearned_income.py - Total unearned income (Person level)
- mi_tanf_payment_standard.py - Payment standard by household size

Key implementation features:
- ZERO hard-coded values - all amounts parameterized
- Complete benefit calculation with earned income disregards
- Proper period handling (YEAR variables accessed with this_year)
- Comprehensive test coverage (6 test cases, all passing)
- Proper federal/state parameter separation
- Detailed documentation and regulatory citations

Simplified implementation excludes:
- Time limits (not cross-sectionally modelable)
- Work requirements (behavioral)
- Ineligible grantee logic (uses eligible grantee standard)

Tests cover:
- Family of 3 with no income ($583 benefit)
- Family of 3 with $500/month income (with disregards)
- Single person with no income ($363 benefit)
- Income too high (ineligible)
- Assets too high (ineligible)
- Large household size 8 (additional per person amount)

Related issue: PolicyEngine#6813

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Changed mi_tanf_benefit to mi_tanf in integration tests to match the actual variable name in the implementation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@codecov
Copy link

codecov bot commented Nov 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (6c8cb6a) to head (8052551).
⚠️ Report is 37 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff              @@
##           master     #6812       +/-   ##
============================================
+ Coverage   72.92%   100.00%   +27.07%     
============================================
  Files        3252        11     -3241     
  Lines       46840       147    -46693     
  Branches      243         0      -243     
============================================
- Hits        34159       147    -34012     
+ Misses      12667         0    -12667     
+ Partials       14         0       -14     
Flag Coverage Δ
unittests 100.00% <100.00%> (+27.07%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

hua7450 and others added 3 commits November 10, 2025 18:55
Created unit test files for each MI TANF variable with formulas:
- mi_tanf.yaml - Main benefit calculation with edge cases
- mi_tanf_eligible.yaml - Overall eligibility tests
- mi_tanf_income_eligible.yaml - Income eligibility boundary tests
- mi_tanf_resources_eligible.yaml - Asset eligibility tests
- mi_tanf_countable_income.yaml - Combined income tests
- mi_tanf_countable_earned_income.yaml - Earned income disregard tests
- mi_tanf_payment_standard.yaml - Payment standards by household size (1-9)
- mi_tanf_gross_unearned_income.yaml - Unearned income component tests

Edge cases covered:
- Boundary conditions at thresholds (exactly at, one dollar above/below)
- Zero values and maximum values
- Different household sizes (1-9 people)
- Multiple income sources
- State filtering (MI vs non-MI)

Also fixed integration test issues:
- Corrected social_security variable references
- Fixed earned income disregard calculation expectations

All 74 tests now passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Replace hard-coded value with parameter following Massachusetts TAFDC pattern.
This ensures all numeric values come from parameters as required by quality standards.

- Add max_bracket_size.yaml parameter (value: 7)
- Update mi_tanf_payment_standard.py to use parameter
- All 74 tests still passing
Major improvements to parameter structure and code organization:

**Parameter Reorganization:**
- Move parameters into logical subfolder structure:
  - income/disregards/ (fixed.yaml, initial_rate.yaml, ongoing_rate.yaml)
  - payment_standards/ (eligible_grantee.yaml, ineligible_grantee.yaml,
    additional_per_person.yaml, max_bracket_size.yaml)
  - eligibility/ (asset_limit.yaml)
- Fix parameter file structure following PolicyEngine standards:
  - Order: description → values → metadata
  - Use full state name in descriptions ("Michigan" not "MI")
  - Proper metadata fields (unit, period, label, reference)
  - Remove trailing decimal zeros (0.2 not 0.20, 0.5 not 0.50)

**Simplified TANF Implementation:**
- Use federal TANF income baseline via `adds` pattern
- mi_tanf_gross_earned_income uses adds = ["tanf_gross_earned_income"]
- mi_tanf_gross_unearned_income uses adds = ["tanf_gross_unearned_income"]
- Remove state-specific income source parameters (not needed for simplified)
- Follow rules-engineer guidance for simplified TANF implementations

**Code Quality:**
- Remove unnecessary __init__.py files
- Update variable references to new parameter paths
- Maintain all existing functionality

**Status:**
- 62/74 tests passing
- 12 failing tests related to federal TANF income source configuration
- Parameter structure now matches DC/IL TANF patterns

References: DC TANF, IL TANF parameter structures

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
hua7450 and others added 2 commits November 10, 2025 19:33
Reorganized parameter folder structure to match PA TANF and OH OWF patterns:

**OLD structure (incorrect):**
```
tanf/
├── income/disregards/ (wrong - should be deductions)
├── payment_standards/ (wrong - plural)
└── eligibility/ (wrong - should be at top level)
```

**NEW structure (correct - matches PA/OH):**
```
tanf/
├── resource_limit.yaml (top level, like PA)
├── income/deductions/earned_income_disregard/
│   ├── flat_amount.yaml (matches OH pattern)
│   └── percent_of_remainder.yaml (matches OH pattern)
└── payment_standard/ (singular, like OH)
    ├── amounts.yaml (matches OH pattern)
    └── additional_person_increment.yaml (matches OH pattern)
```

**Key changes:**
- Rename payment_standards/ → payment_standard/ (singular)
- Move income/disregards/ → income/deductions/earned_income_disregard/
- Move eligibility/asset_limit.yaml → resource_limit.yaml (top level)
- Rename files to match PA/OH naming:
  - fixed.yaml → flat_amount.yaml
  - ongoing_rate.yaml → percent_of_remainder.yaml
  - eligible_grantee.yaml → amounts.yaml
  - additional_per_person.yaml → additional_person_increment.yaml

- Update all variable references to new paths
- Remove ineligible_grantee and related files (simplified implementation)
- Remove hard-coded max_bracket_size (use 7 directly in code for simplicity)

**Status:**
- 62/74 tests passing (same as before)
- Folder structure now properly matches established PA/OH TANF patterns
- All parameter paths updated and working

References: PA TANF, OH OWF parameter structures

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Complete reorganization to properly reflect Michigan's Family Independence
Program (FIP) naming and follow established PA TANF and OH OWF patterns.

**Major Changes:**

1. **Renamed Program: TANF → FIP**
   - All variables: mi_tanf_* → mi_fip_*
   - All folders: tanf/ → fip/
   - All test files renamed
   - All references updated

2. **Restructured Parameters (Following PA/OH):**
   ```
   fip/
   ├── resource_limit.yaml (top level, like PA)
   ├── income/deductions/earned_income_disregard/
   │   ├── flat_amount.yaml ($200)
   │   └── percent_of_remainder.yaml (20% → 50% in 2011)
   └── payment_standard/
       ├── amounts.yaml (bracket schedule)
       └── additional_person_increment.yaml ($95)
   ```

3. **Restructured Variables (Following OH OWF):**
   ```
   fip/
   ├── eligibility/
   │   ├── mi_fip_eligible.py
   │   ├── mi_fip_income_eligible.py
   │   └── mi_fip_resources_eligible.py
   ├── income/
   │   ├── mi_fip_countable_earned_income.py
   │   └── mi_fip_countable_income.py
   ├── mi_fip.py
   └── mi_fip_payment_standard.py
   ```

4. **Simplified Implementation:**
   - Removed unnecessary wrapper variables (mi_fip_gross_earned/unearned_income)
   - Use federal TANF baseline directly (tanf_gross_earned_income,
     tanf_gross_unearned_income)
   - Updated all tests to use employment_income_before_lsr

5. **Fixed Historical Dates:**
   - Changed 1900-01-01 → 2008-10-01 (earliest documented FIP date)
   - Aligns with payment standard freeze date
   - 50% disregard rate change: 2011-01-01

6. **Label Improvements:**
   - Spell out "Michigan" (not "MI") in all labels
   - Use "Family Independence Program" consistently
   - Follow PA/OH naming conventions

**Test Results:**
- All 66 tests passing (100%)
- Integration tests: 17/17 passing
- Unit tests: 49/49 passing

**References:**
- PA TANF (pa-tanf-simple branch)
- OH OWF (oh-tanf-simple branch)
- Parameter structure follows parameter-architect guidelines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@hua7450 hua7450 changed the title Implement Michigan TANF (simplified) Implement Michigan Family Independence Program (FIP) Nov 11, 2025
hua7450 and others added 3 commits November 11, 2025 17:05
Major fixes based on direct BEM manual research to correctly implement
Michigan FIP income calculation rules.

**Critical Fix: Per-Person Deduction Logic**

BEM 518 Page 5 (Issuance Earned Income Disregard):
"Deduct $200 from each person's countable earnings. Then deduct an
additional 50 percent of each person's remaining earnings... Apply this
disregard separately to each program group member's earned income."

Changed from household-level to per-person deduction:
- OLD: Apply $200 once to household total
- NEW: Apply $200 to each working person separately

Impact: Families with multiple earners get more benefits (correct per BEM 518)
Example: 2 earners ($800+$400) → Countable $500→$400, Benefit $207→$307

**Distinguish New Applicants vs Enrolled Recipients**

Per BEM 518 and BEM 520:
- New applicants: $200 + 20% deduction (Qualifying Deficit Test, Section C)
- Enrolled recipients: $200 + 50% deduction (Issuance Deficit Test, Section D)

Uses is_tanf_enrolled to determine which rate applies.

**New Structure:**

Parameters:
- income/deductions/earned_income_disregard/initial_percent.yaml (20%)
- income/deductions/earned_income_disregard/ongoing_percent.yaml (50% since 2011)

Variables:
- income/mi_fip_earned_income_after_deductions_person.py (NEW - Person entity)
- income/mi_fip_countable_earned_income.py (uses adds pattern)
- income/mi_fip_countable_income.py (uses add() helper)

**Updated All References to BEM Manuals:**

All variables now cite specific BEM sections:
- BEM 518: Income Budgeting (BPB 2023-013, effective 7-1-2023)
- BEM 520: Computing Budget (BPB 2023-002, effective 1-1-2023)
- BEM 503: Unearned Income (BPB 2025-022, effective 10-1-2025)

**Historical Payment Standards Added:**

From 2017 State Plan (page 7) - frozen 2008-2024:
- Sizes 1-7: $306, $403, $492, $597, $694, $828, $905
- Additional: $80 per person (size 8+)

From 2025 State Plan - effective 2024-12-01:
- Sizes 1-7: $363, $478, $583, $707, $822, $981, $1,072
- Additional: $95 per person (size 8+)

**Test Results:**
- All 67 tests passing (100%)
- Added is_tanf_enrolled: true to tests expecting 50% rate
- Added new test for 20% initial applicant rate
- Fixed dual-earner expectations ($500→$400 countable)

**Legal Authority:**
- P.A. 280 of 1939, as amended
- MCL 400.57 et seq.
- BEM 518, 520, 503 (Michigan DHHS policy manuals)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…hecks

Fixes:
- Add demographic eligibility check (is_demographic_tanf_eligible)
- Add immigration/citizenship check (is_citizen_or_legal_immigrant)
- Remove invalid test cases for single adults without children
  (TANF requires at least one adult and one child)

Tests:
- Update mi_fip_eligible.yaml with 7 comprehensive test cases
- Remove 2 invalid single-person household tests from integration.yaml
- All 67 tests now passing

Per Michigan FIP requirements: "You must have at least one citizen or
qualified lawful immigrant in your family who is part of your household"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@hua7450 hua7450 marked this pull request as ready for review November 11, 2025 23:20
@hua7450 hua7450 closed this Nov 11, 2025
@hua7450 hua7450 deleted the mi_tanf_simple branch November 11, 2025 23:23
@hua7450 hua7450 restored the mi_tanf_simple branch November 12, 2025 15:02
@hua7450 hua7450 reopened this Nov 12, 2025
@hua7450 hua7450 self-assigned this Nov 12, 2025
Correctly implements BEM 518 and BEM 520 dual-test system where initial
eligibility and benefit calculation use different deduction rates.

**Key Fix: Eligibility vs Benefit Calculation**

BEM 518 defines TWO separate tests with different deduction rates:

1. Qualifying Deficit Test (BEM 520 Section C) - Initial eligibility for NEW applicants
   - Uses 20% deduction rate
   - Determines IF you can get FIP

2. Issuance Deficit Test (BEM 520 Section D) - Benefit calculation for EVERYONE
   - Uses 50% deduction rate
   - Determines HOW MUCH you get
   - Applied to both new applicants and enrolled recipients

**Previous Implementation (Wrong):**
- Used is_tanf_enrolled in benefit calculation
- New applicants got 20% deduction on their BENEFIT amount
- Enrolled recipients got 50% deduction on their BENEFIT amount

**Corrected Implementation:**
- Benefit calculation ALWAYS uses 50% for everyone
- Initial eligibility test uses 20% only for new applicants
- Enrolled recipients use 50% for both eligibility and benefits

**New Variables Created:**

For initial eligibility testing (20% rate):
- income/mi_fip_earned_income_after_deductions_initial_person.py (Person)
- income/mi_fip_countable_earned_income_initial.py (SPMUnit, uses adds)
- income/mi_fip_countable_income_initial.py (SPMUnit, uses adds)

For benefit calculation (50% rate):
- income/mi_fip_earned_income_after_deductions_person.py (always 50%, no enrollment check)
- income/mi_fip_countable_earned_income.py (aggregates 50% version)
- income/mi_fip_countable_income.py (uses adds pattern)

**Updated Logic:**

mi_fip_income_eligible.py:
- Enrolled: Uses issuance test (50% rate)
- New applicants: Uses qualifying test (20% rate)
- Returns: where(enrolled, passes_issuance_test, passes_qualifying_test)

mi_fip.py:
- Always uses mi_fip_countable_income (50% version)
- Simplified formula per suggestion

**Test Updates:**
- Removed is_tanf_enrolled from benefit calculation tests (not needed)
- Added is_tanf_enrolled: true to integration tests (most are enrolled recipients)
- Updated eligibility tests to properly test both 20% and 50% scenarios

**Test Results:**
- All 66 tests passing (100%)

**Legal Authority:**
- BEM 518 (BPB 2023-013): Income Budgeting
- BEM 520 (BPB 2023-002): Computing the Budget

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
href: https://www.michigan.gov/mdhhs/-/media/Project/Websites/mdhhs/Inside-MDHHS/Reports-and-Statistics---Human-Services/State-Plans-and-Federal-Regulations/TANF_State_Plan_Effective_01-01-23_Rev-07-01-25.pdf
- title: Michigan DHHS Reference Table 210 - FIP Monthly Assistance Payment Standard
href: https://mdhhs-pres-prod.michigan.gov/olmweb/ex/RF/Public/RFT/210.pdf
publication_date: 2025-01-01
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets remove publication dates


# For sizes 1-7, use the bracket schedule
# For size 8+, use the size 7 amount plus additional per person
max_bracket_size = 7 # Maximum size in bracket schedule
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
max_bracket_size = 7 # Maximum size in bracket schedule
max_household_size = 7 # Maximum size in bracket schedule

Comment on lines +28 to +30
# Add additional amount for household size 8+
additional_persons = max_(size - max_bracket_size, 0)
additional_amount = additional_persons * p.additional_person_increment
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make the additional amount a separate variable?

Comment on lines +25 to +27
has_citizen = spm_unit.any(
person("is_citizen_or_legal_immigrant", period)
)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is specifically stated in the regs. lets make this a separate list parameter with the immigration statuses

@@ -0,0 +1,18 @@
description: Michigan adds this amount to the Family Independence Program payment standard for each person beyond household size 7.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description: Michigan adds this amount to the Family Independence Program payment standard for each person beyond household size 7.
description: Michigan adds this amount to the Family Independence Program payment standard for each person beyond the maximum household size.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Michigan Family Independence Program (FIP)

2 participants