Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: patch
changes:
fixed:
- Among joint filers, limit the Delaware elderly or disabled exclusion to filers with both head and spouse eligible.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
description: Delaware provides this income exclusion to elderly and disabled filers, based on filing status.
# The joint amount is defined as double of the Single amount,
# we encode it as 1/2 of the joint total as we calculate the
# amount on a person level
JOINT:
2021-01-01: 4_000
2021-01-01: 2_000
HEAD_OF_HOUSEHOLD:
2021-01-01: 2_000
WIDOW:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,34 @@
state_fips: 10 # DE
output: # expected results from patched TAXSIM35 2024-02-15 version
de_income_tax: 7_901.98

- name: Tax unit with taxsimid 84350 in e21.its.csv and e21.ots.csv
absolute_error_margin: 0.01
period: 2021
input:
people:
person1:
age: 63
employment_income: 128010
taxable_interest_income: 5505
person2:
age: 63
employment_income: 2010
taxable_interest_income: 5505
person3:
age: 11
tax_units:
tax_unit:
members: [person1, person2, person3]
premium_tax_credit: 0 # not in TAXSIM35
spm_units:
spm_unit:
members: [person1, person2, person3]
snap: 0 # not in TAXSIM35
tanf: 0 # not in TAXSIM35
households:
household:
members: [person1, person2, person3]
state_fips: 10 # DE
output: # expected results from patched TAXSIM35 2024-03-07 version
de_income_tax: 6585.82
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
- name: Eligible individual exclusion
period: 2023
input:
filing_status: SEPARATE
de_elderly_or_disabled_income_exclusion_eligible_person: true
output:
de_elderly_or_disabled_income_exclusion: 2_000

- name: Ineligible individual exclusion
period: 2023
input:
filing_status: SEPARATE
de_elderly_or_disabled_income_exclusion_eligible_person: false
output:
de_elderly_or_disabled_income_exclusion: 0

- name: Joint filing status with two eligible people
period: 2023
input:
people:
person1:
is_tax_unit_head: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
person2:
is_tax_unit_spouse: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
tax_units:
tax_unit:
members: [person1, person2]
filing_status: JOINT
households:
household:
members: [person1, person2]
state_code: DE
output:
de_elderly_or_disabled_income_exclusion: [2_000, 2_000]

- name: Joint filing status with one eligible person
period: 2023
input:
people:
person1:
is_tax_unit_head: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
person2:
is_tax_unit_spouse: true
de_elderly_or_disabled_income_exclusion_eligible_person: false
tax_units:
tax_unit:
members: [person1, person2]
filing_status: JOINT
households:
household:
members: [person1, person2]
state_code: DE
output:
de_elderly_or_disabled_income_exclusion: [0, 0]

- name: Joint filing status with two eligible people
period: 2023
input:
people:
person1:
is_tax_unit_head: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
person2:
is_tax_unit_spouse: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
person3:
is_tax_unit_spouse: true
de_elderly_or_disabled_income_exclusion_eligible_person: false
tax_units:
tax_unit:
members: [person1, person2, person3]
filing_status: JOINT
households:
household:
members: [person1, person2, person3]
state_code: DE
output:
de_elderly_or_disabled_income_exclusion: [2_000, 2_000, 0]

- name: Head of household filing status with one eligible person
period: 2023
input:
people:
person1:
is_tax_unit_head: true
de_elderly_or_disabled_income_exclusion_eligible_person: true
person2:
is_tax_unit_spouse: true
de_elderly_or_disabled_income_exclusion_eligible_person: false
tax_units:
tax_unit:
members: [person1, person2]
filing_status: HEAD_OF_HOUSEHOLD
households:
household:
members: [person1, person2]
state_code: DE
output:
de_elderly_or_disabled_income_exclusion: [2_000, 0]

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,29 @@ class de_elderly_or_disabled_income_exclusion(Variable):
defined_for = "de_elderly_or_disabled_income_exclusion_eligible_person"

def formula(person, period, parameters):
tax_unit = person.tax_unit
# First get their filing status.
filing_status = person.tax_unit(
"state_filing_status_if_married_filing_separately_on_same_return",
period,
)
filing_status = tax_unit("filing_status", period)
p = parameters(
period
).gov.states.de.tax.income.subtractions.exclusions.elderly_or_disabled

return p.amount[filing_status]
# If filing jointly, both spouses have to be eligible.
joint = filing_status == filing_status.possible_values.JOINT

head = person("is_tax_unit_head", period)

spouse = person("is_tax_unit_spouse", period)

eligible_person = person(
"de_elderly_or_disabled_income_exclusion_eligible_person", period
)

eligible_head_present = tax_unit.any(head & eligible_person)

eligible_spouse_present = tax_unit.any(spouse & eligible_person)

eligible_joint_unit = eligible_head_present & eligible_spouse_present

eligible_unit = where(joint, eligible_joint_unit, eligible_person)
return p.amount[filing_status] * eligible_unit