Skip to content

Audit: ACA-related gates that compare the truncated aca_magi_fraction with an income limit #10329

Open

Description

@MaxGhenis

PolicyEngine-US, upstream/main 645fcd3 (gate files unchanged at 740e1eb), 2026-10-20.
aca_magi_fraction = floor(100 * max(aca_magi, 0) / tax_unit_fpg(prior year)) / 100 (Form 8962 line 5).
Truncation maps every exact ratio in [L, L+0.01) to L: fraction <= L admits up to L+0.0099 and fraction > L excludes
up to L+0.0099; fraction < L and fraction >= L equal the exact tests for whole-percentage L.

"Main" columns were executed with a single filer and the real prior-year guideline ($15,650 for 2026), at the limit,
limit + 0.003% and limit + 0.994%. "e2e" = wages only, nothing supplied; "gate" = the gate alone, with its non-income
conditions supplied. Every quoted source was fetched and read this session unless marked otherwise.

# Gate (variable) Edge Governing wording Truncation prescribed for this test? Main at limit + 0.003% / + 0.994% Verdict PR
1 Federal PTC income test (is_aca_ptc_eligible via gov.aca.ptc_income_eligibility) 400% ceiling, 2026+ 26 U.S.C. 36B(c)(1)(A) "does not exceed 400 percent"; Form 8962 Worksheet 2 asks whether income is "more than" 4 x FPL in dollars, then truncates Only for line 5 (the table); "more than 400%" is decided on dollars Exactly 400% ineligible (bracket starts at 4.00); 400.003% ineligible (correct) Bug at exactly 400%; fixed #10312
2 Same 100% floor "equals or exceeds 100 percent" Line 5 truncation is exact for >= Correct No change —
3 BHP payment PTC component (basic_health_program) 400% Reuses the PTC scale — Same as row 1; unreachable in baseline (BHP enrollment caps at 200%/250%) Fixed with row 1 (reads aca_ptc_income_eligible) #10312
4 pays_aca_premium coverage gap 100% floor, < — — fraction < floor is exact No change —
5 aca_ptc_below_fpl_immigration_exception < 1 — — Exact No change —
6 aca_required_contribution_percentage Applicable-figure table Form 8962 line 5 Yes (table lookup) — No change (amount table; truncation prescribed) —
7 CSR eligibility (marketplace_csr_eligible) 250% 42 U.S.C. 18071(c)(2)(C) "not more than 250 percent"; 45 CFR 155.305(g)(1)(i)(C) "does not exceed 250 percent" No e2e eligible / eligible Bug; fixed #10326
8 CSR tiers (marketplace_csr_category) 150%, 200% 18071(c)(2)(A)-(B) "not more than 150 / 200 percent"; 155.305(g)(2) "less than or equal to" No e2e 150.003% and 150.994% 94% tier; 200.003% 87% Bug; fixed #10326
9 California Premium Subsidy 150%, 165%, 200% — — — Out of scope (#10301, #10305) —
10 Colorado Premium Assistance (co_premium_assistance_eligible) 400% Reg 4-2-78 (3 CCR 702-4) §4.C "no greater than 400% of the Federal Poverty Level" No gate eligible / eligible; e2e masked by the federal gate (binds under a reform extending the credit) Bug; fixed #10318
11 Covered Connecticut (ct_covered_connecticut_eligible) 175% C.G.S. 19a-754c(b)(1)(C)(iv) "up to one hundred seventy-five per cent"; DSS "up to an[d] including 175%" No e2e eligible / eligible Bug; fixed #10316
12 Maryland Premium Assistance (md_premium_assistance_eligible) 400% MHBE PY2026 "No state subsidy above 400% FPL"; PY2027 "400% FPL or below" No gate eligible / eligible; e2e masked by the federal gate Bug; fixed #10320
13 ConnectorCare (ma_connector_care_eligible) 400% 956 CMR 12.04(3)(b)3.c "not over 400% of the FPL" No gate eligible / eligible; e2e masked by the federal gate Bug; fixed #10321
14 ConnectorCare 100% floor, >= "at least 100%" — Exact No change —
15 ConnectorCare Plan Types (ma_connector_care via enrollee_premium) 150/200/250/300% 956 CMR 12.04(3)(b) "at or below 150%" (2A), "over 150% and not over 200%" (2B), ... No (the Overview's "150.1%" labels set no rounding rule) 150.003% and 150.994% 2A ($0) instead of 2B ($53); same above 200/250/300% Bug; fixed #10321
16 NJ Health Plan Savings (nj_njhps_member_eligible, nj_njhps_eligible) 600% DOBI 2027 Rate Filing Requirements §7 (plan year 2026 amounts) "At least 550% FPL but less than or equal to 600% FPL"; "Above 600% FPL" $0 No e2e eligible / eligible Bug; fixed #10323
17 Same 138% floor, >= Medicaid boundary — Exact (float32 1.38 compares equal) No change —
18 NJHPS per-member bands (pmpm) 150/200/250/400% DOBI table: "At least 150% FPL but less than 200% FPL", ... (lower-inclusive) No Exactly 150% and up to 150.99% got $20 instead of $40 (x.0001 thresholds, upper-inclusive) Bug (closure and truncation); fixed #10323
19 NM base program (nm_premium_assistance_eligible) 400% PY2026 manual "over 400% of the FPL do not qualify" No gate eligible / eligible; e2e masked by the federal gate Bug; fixed #10328
20 NM Middle Income Household (nm_premium_assistance_mih_eligible) 400%, > Addendum 1 §I.A(3) "above 400% of the FPL" No Ineligible / ineligible: 400.003%-400.994% got neither component Bug; fixed #10328
21 NM PY2026 gross-up (nm_premium_assistance) 200%, <= PY2026 manual "up to 200% FPL"; next range "200.01-400%" No 200.003% and 200.994% grossed up Bug; fixed #10328
22 NM PY2027 gross-up 200%, < PY2027 manual "under 200% (< 200%)" — Exact No change —
23 Vermont Premium Assistance (vt_premium_assistance_eligible) 300% 33 V.S.A. 1812(a)(1) "less than or equal to 300 percent" No e2e eligible / eligible Bug; fixed #10313
24 Washington Cascade Care Savings (wa_cascade_care_savings_eligible) 250% WAHBE PY2026 and PY2027 policy §4(1)(c) "up to 250% of the Federal Poverty Level" No e2e eligible / eligible Bug; fixed #10314
25 MD and NM target-contribution schedules band interpolation — Not checked Interpolate on the truncated fraction Not in scope (amount tables); follow-up —

Open questions recorded, not decided

  • Exactly at the limit, "up to" (WA 250%, CT statute 175%) leaves inclusive vs strict open; the model's existing
    inclusive reading is kept, and CT's DSS wording ("up to an[d] including") supports it. Only above-limit incomes change.
  • NM PY2026 gross-up: the manual says "up to 200%", "under 200%" and "200.01-400%" in one section. The existing
    boundary_inclusive (from a 2026-08-10 review) keeps exactly 200% grossed up; the exact ratio puts 200.003% above it.
  • CSR floor: 42 U.S.C. 18071(b)(2) says "exceeds 100 percent", (c)(2)(A) "not less than 100 percent", and 45 CFR
    155.305(g)(2)(i) "greater than or equal to 100 percent". The model matches the regulation; truncation is not involved.
  • BHP enrollment (is_basic_health_program_eligible) uses the untruncated medicaid_income_level, so it is outside
    this audit; its floor >= 1.33 reads 42 U.S.C. 18051(e)(1)(B) "exceeds 133 percent" inclusively (Medicaid covers
    that income in practice).
  • Federal ACA PTC income gate zeroes the credit at [400%, 401%) FPL (truncation boundary vs Form 8962) #9264 proposes moving the federal threshold to 4.01 on the premise that 400.x% is eligible
    under Form 8962. Worksheet 2 enters 401 for any income above 4 x FPL, so 400.x% is ineligible; only exactly 400% was
    misclassified (Treat income exactly at 400% FPL as premium tax credit eligible #10312).

Coordination

#10041 (draft) changes aca_magi_fraction's denominator to aca_fpg and moves the PTC
income test into is_aca_ptc_eligible_before_premium. Every exact-ratio gate here and in #10305 divides by
tax_unit_fpg(period.last_year); whichever lands later must use the fraction's denominator.

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions