Summary
The Stay NJ benefit calculation formula in nj_staynj.py does not match the official NJ Treasury formula. There are two related issues:
1. Wrong order of operations
Current repo logic:
net_property_taxes = max_(property_taxes - anchor_benefit, 0)
calculated_benefit = net_property_taxes * p.rate
return min_(calculated_benefit, p.max_benefit)
This computes min((property_taxes - ANCHOR) * 50%, $6,500).
Official NJ Treasury formula:
"If the sum of the Senior Freeze and ANCHOR amount is less than 50% of your property taxes ($6,500 max), your Stay NJ amount will be the difference between 50% of the property taxes billed and the benefits you already received."
The correct formula is:
target = min(property_taxes * 0.50, $6,500)
stay_nj = max(target - ANCHOR - Senior_Freeze, 0)
Example: $10,000 property taxes, $1,750 ANCHOR, no Senior Freeze
- Repo:
max($10,000 - $1,750, 0) * 0.50 = $4,125
- Official:
min($10,000 * 0.50, $6,500) - $1,750 = $3,250
- Difference: $875 overstatement
2. Senior Freeze benefits not subtracted
The repo only subtracts ANCHOR from the calculation, but the official formula subtracts both ANCHOR and Senior Freeze benefits. This means Stay NJ benefits are overstated for anyone who also receives Senior Freeze reimbursement.
Additional note: Disability eligibility
Both ANCHOR and Stay NJ grant senior-level benefits to applicants who are "65 or older OR disabled" (ANCHOR) / "receiving Federal Social Security Disability" (Stay NJ). The current implementations only check age, not disability status. This is a lower-priority gap but worth addressing.
References
Summary
The Stay NJ benefit calculation formula in
nj_staynj.pydoes not match the official NJ Treasury formula. There are two related issues:1. Wrong order of operations
Current repo logic:
This computes
min((property_taxes - ANCHOR) * 50%, $6,500).Official NJ Treasury formula:
The correct formula is:
Example: $10,000 property taxes, $1,750 ANCHOR, no Senior Freeze
max($10,000 - $1,750, 0) * 0.50= $4,125min($10,000 * 0.50, $6,500) - $1,750= $3,2502. Senior Freeze benefits not subtracted
The repo only subtracts ANCHOR from the calculation, but the official formula subtracts both ANCHOR and Senior Freeze benefits. This means Stay NJ benefits are overstated for anyone who also receives Senior Freeze reimbursement.
Additional note: Disability eligibility
Both ANCHOR and Stay NJ grant senior-level benefits to applicants who are "65 or older OR disabled" (ANCHOR) / "receiving Federal Social Security Disability" (Stay NJ). The current implementations only check age, not disability status. This is a lower-priority gap but worth addressing.
References