PolicyEngine / PolicyEngine/policyengine-us

Federal ACA PTC income gate zeroes the credit at [400%, 401%) FPL (truncation boundary vs Form 8962)

Open Beginner friendly
#9,264 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
162
Forks
212
Avg merge
3d 3h
Merged PRs (30d)
97

Description

### Summary
The federal ACA premium tax credit income-eligibility gate zeroes the credit for units whose income lands in **[400%, 401%) FPL**, contradicting 26 U.S.C. § 36B(c)(1)(A) ("does not exceed 400 percent") and IRS Form 8962 (a truncated "400" is eligible; only "401 or more" is denied).

### Details
`policyengine_us/parameters/gov/aca/ptc_income_eligibility.yaml` returns `false` for the `>= 4.00` bracket from 2026-01-01. Because the lookup uses `numpy.digitize(right=False)`, the `4.00` threshold is **lower-bound-inclusive**, so the effective condition is `aca_magi_fraction < 4.00`. Since `aca_magi_fraction` truncates (floors to 2 decimals), every unit with raw income in **[400%, 401%) FPL** truncates to exactly `4.00` and is misclassified as ineligible.

Per Form 8962, a household at 400.x% FPL truncates its "federal poverty line percentage" to `400` and **is** APTC-eligible; only `401` or more is denied.

### Suggested fix
Change the eligibility threshold from `4.00` to `4.01` (mirroring the Form 8962 truncation rule), so the boundary population at [400%, 401%) FPL remains eligible.

### Downstream impact
Surfaced during review of the Maryland Premium Assistance PR (#9218). The MD state subsidy gate is correctly inclusive (`<= 4`) and MIA Exhibit 2a's 400% FPL rows receive both APTC and the state subsidy, but the federal AND-gate zeroes those units end-to-end, so the MD tests can only assert the statute-correct result by injecting `is_aca_ptc_eligible: true`. This is a pre-existing upstream issue, not introduced by that PR (it touches no `gov/aca` file).

_Filed per review item A8 (reviewer @hua7450)._

Contributor guide

Open the contributing guide

Research direction

Start with policyengine_us/parameters/gov/aca/ptc_income_eligibility.yaml and inspect the >= 4.00 bracket and its 2026-01-01 effective date. Review the related Maryland Premium Assistance tests from PR #9218, then verify that the [400%, 401%) boundary remains eligible while 401% or more is denied.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.