Skip to content

Implement SC H.4216 comprehensive tax reform#7494

Merged
PavelMakarchuk merged 3 commits intoPolicyEngine:mainfrom
DTrim99:sc-h4216-tax-reform
Feb 26, 2026
Merged

Implement SC H.4216 comprehensive tax reform#7494
PavelMakarchuk merged 3 commits intoPolicyEngine:mainfrom
DTrim99:sc-h4216-tax-reform

Conversation

@DTrim99
Copy link
Copy Markdown
Collaborator

@DTrim99 DTrim99 commented Feb 25, 2026

Summary

Implements South Carolina H.4216 as a contributed reform. This comprehensive income tax reform bill passed the SC Senate 39-5 and includes:

1. EITC Cap at $200 (Section 7)

The bill caps the SC EITC (125% of federal) at a maximum of $200.

2. SC Income Adjusted Deduction (SCIAD) (Section 3)

Replaces federal standard/itemized deductions with a new state-specific deduction:

Filing Status Base Amount Phase-out Start Phase-out End
Single $15,000 $40,000 $95,000
Married Filing Separately $15,000 $40,000 $95,000
Head of Household $22,500 $60,000 $142,500
Married Filing Jointly $30,000 $80,000 $190,000
Surviving Spouse $30,000 $80,000 $190,000

Formula: SCIAD = base_amount × (1 - (AGI - phase_out_start) / phase_out_width)

3. New Tax Rates (Section 1)

Bracket Threshold Rate
1 $0 1.99%
2 $30,000 5.21%

Key Implementation Details

  • Federal standard/itemized deductions are eliminated for SC purposes (Section 2)
  • The reform starts from AGI and applies SCIAD instead of federal deductions
  • SC additions and subtractions still apply

Closes #7493

Test Plan

  • 24 YAML tests covering:
    • EITC cap ($200 limit)
    • SCIAD for all 5 filing statuses
    • Phase-out boundary conditions (at start, mid, end)
    • Rate bracket boundaries ($30k threshold)
    • Zero/low income edge cases
    • Verification that federal deductions are ignored
    • Non-SC resident handling

🤖 Generated with Claude Code

@DTrim99
Copy link
Copy Markdown
Collaborator Author

DTrim99 commented Feb 25, 2026

Implementation Notes

Files Added

Parameters (gov/contrib/states/sc/h4216/):

  • in_effect.yaml - Master switch (default: false)
  • eitc/max.yaml - $200 cap
  • sciad/amount.yaml - Base amounts by filing status
  • sciad/phase_out/start.yaml - Phase-out thresholds
  • sciad/phase_out/width.yaml - Phase-out denominators
  • rates.yaml - New 1.99%/5.21% rate structure

Reform Code (reforms/states/sc/h4216/):

  • Overrides sc_eitc to apply $200 cap
  • Creates new sc_sciad variable with phase-out formula
  • Overrides sc_taxable_income to use AGI + SCIAD (not federal taxable income)
  • Overrides sc_income_tax_before_non_refundable_credits with new rates

Tests (24 total):

  • 2 EITC cap tests
  • 10 SCIAD tests (all filing statuses, phase-out boundaries)
  • 4 rate bracket tests
  • 3 standard/itemized deduction elimination tests
  • 3 zero/low income edge cases
  • 2 boundary tests (phase-out start/end exact values)

References

@DTrim99 DTrim99 force-pushed the sc-h4216-tax-reform branch from 7d51bbf to eeefd54 Compare February 25, 2026 22:45
@DTrim99
Copy link
Copy Markdown
Collaborator Author

DTrim99 commented Feb 25, 2026

Rebased on upstream/main and added changelog fragment in changelog.d/sc-h4216-tax-reform.added.md to comply with the new towncrier-based changelog system.

Adds contributed reform for South Carolina H.4216 which includes:
- EITC cap at $200 (Section 7)
- SC Income Adjusted Deduction (SCIAD) replacing federal standard/itemized deductions (Section 3)
- New tax rates: 1.99% up to $30k, 5.21% above (Section 1)

SCIAD amounts by filing status:
- Single/Separate: $15,000 (phases out $40k-$95k AGI)
- Head of Household: $22,500 (phases out $60k-$142.5k AGI)
- Joint/Surviving Spouse: $30,000 (phases out $80k-$190k AGI)

Closes PolicyEngine#7493

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@DTrim99 DTrim99 force-pushed the sc-h4216-tax-reform branch from eeefd54 to e39e40f Compare February 25, 2026 22:50
PavelMakarchuk and others added 2 commits February 26, 2026 12:39
- Change parameter labels from "SC" to "South Carolina" in all 6 YAML files
- Add SC Code section numbers to reference titles in rates.yaml and eitc/max.yaml
- Add SEPARATE filer phase-out and fully-phased-out SCIAD tests
- Add SURVIVING_SPOUSE phase-out and fully-phased-out SCIAD tests
- Complete end-to-end test verifying all 4 reform variables together
- Renumber test cases sequentially (38 total)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Implement round-down-to-nearest-$10 rule for SCIAD per H.4216 Section 3
- Update test expected values to reflect rounding
- Add note in rates.yaml that H.4216 Items 2-3 automatic rate reductions
  (beginning 2027 based on revenue projections) are not modeled

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@DTrim99
Copy link
Copy Markdown
Collaborator Author

DTrim99 commented Feb 26, 2026

Review Fixes Applied

Added the following based on code review:

1. SCIAD Rounding Rule (Critical Fix)

Per H.4216 Section 3, SCIAD reductions must round down to nearest $10. Added:

raw_sciad = max_(base_amount * (1 - phase_out_fraction), 0)
# Per H.4216 Section 3, round down to nearest $10
return np.floor(raw_sciad / 10) * 10

2. Updated Tests

Adjusted expected values for 4 tests to reflect the rounding rule:

  • Case 15: $14,999.7 → $14,990
  • Case 17: $0.3 → $0
  • Case 28: SCIAD $12,272.7 → $12,270, taxable income updated accordingly
  • Case 38: SCIAD $12,273 → $12,270, taxable income updated accordingly

3. Documented Unmodeled Provisions

Added note in rates.yaml that H.4216 Items 2-3 (automatic rate reductions beginning 2027 based on revenue projections ≥5% YoY growth) are not currently modeled.

All 38 tests pass ✅

@PavelMakarchuk PavelMakarchuk merged commit 1ad409c into PolicyEngine:main Feb 26, 2026
7 checks passed
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.

SC H4216: Add SC EITC cap and SCIAD deduction parameters

2 participants