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:
- Reduce the Louisiana exempt income in 2021.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
description: Louisiana reduces the exempt adjusted gross income if this is true.

values:
2021-01-01: true
2022-01-01: false
metadata:
unit: bool
period: year
label: Louisiana exempt adjusted gross income reduction in effect
reference:
- title: 2021 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540i(2021)%20Instructions.pdf#page=9
- title: 2022 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540iWEB(2022)D1.pdf#page=9
- title: 2023 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540i%20WEB(2023)%20INSTRUCTIONS.pdf#page=10
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
description: Louisiana reduces the exempt adjusted gross income by this rate, based on the exempt income amount.

brackets:
- threshold:
2021-01-01: 0
rate:
2021-01-01: 0
- threshold:
2021-01-01: 15_000
rate:
2021-01-01: 0.25
- threshold:
2021-01-01: 50_000
rate:
2021-01-01: 0.45

metadata:
reference:
- title: 2021 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540i(2021)%20Instructions.pdf#page=9
- title: 2022 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540iWEB(2022)D1.pdf#page=9
- title: 2023 Louisiana Individual Income Tax Return IT-540 Instructions
href: https://revenue.louisiana.gov/TaxForms/IT540i%20WEB(2023)%20INSTRUCTIONS.pdf#page=10
threshold_unit: currency-USD
rate_unit: /1
type: marginal_rate
period: year
label: Louisiana exempt adjusted gross income reduction rate
Original file line number Diff line number Diff line change
@@ -1,10 +1,31 @@
description: Louisiana exempts these sources from adjusted gross income.
values:
2021-01-01:
- la_military_pay_exclusion # 10E
- la_disability_income_exemption_person # 49E
- us_govt_interest # 01E
# Louisiana State Employees’ Retirement Benefits 02E
# Louisiana State Teachers’ Retirement Benefits 03E
- military_retirement_pay # 04E
# Other Retirement Benefits 05E
- la_retirement_exemption_person # 06E
- taxable_social_security # 07E
# Native American Income 08E
# START Savings Program Contributions 09E
- la_military_pay_exclusion # 10E
# Road Home 11E
# Recreation Volunteer 13E
# Volunteer Firefighter 14E
# Voluntary Retrofit Residential Structure 16E
# Elementary and Secondary School Tuition 17E
# Educational Expenses for Home-Schooled Children 18E
# Educational Expenses for a Quality Public Education 19E
# Capital Gain from Sale of Louisiana Business 20E
# Employment of Certain Qualified Disabled Individuals 21E
# S Bank Shareholder Income Exclusion 22E
# Entity Level Taxes Paid to Other States 23E
# Pass–Through Entity Exclusion 24E
# COVID-19 Relief Benefits 27E
- la_disability_income_exemption_person # 49E

metadata:
unit: list
label: Louisiana adjusted gross income exempt income
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,5 +110,25 @@
members: [person1, person2, person3, person4]
state_fips: 22 # LA
output: # expected results from patched TAXSIM35 2024-03-04 version
la_agi: 61020
la_income_tax: 1686.86
la_agi_exempt_income: 19_050
la_agi: 62_370
la_taxable_income: 54_297.6

- name: Tax unit with taxsimid 48858 in f21.its.csv and f21.ots.csv
absolute_error_margin: 0.01
period: 2021
input:
people:
person1:
age: 67
employment_income: 29_010
taxable_interest_income: 11_010
taxable_private_pension_income: 12_000
social_security_retirement: 24_000
households:
household:
members: [person1]
state_fips: 22 # LA
output: # expected results from patched TAXSIM35 2024-03-16 version
la_agi: 48_870
la_income_tax: 1_252.96
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
- name: Unreduced exempt income
period: 2021
input:
state_code: LA
adjusted_gross_income: 30_000
la_retirement_exemption_person: 3_000
taxable_social_security: 1_000
tax_unit_itemizes: false
la_itemized_deductions: 0
la_federal_tax_deduction: 0
output:
la_agi_exempt_income: 4_000

- name: Reduced exempt income
period: 2021
input:
state_code: LA
adjusted_gross_income: 80_000
la_retirement_exemption_person: 20_000
taxable_social_security: 1_000
tax_unit_itemizes: false
la_itemized_deductions: 0
la_federal_tax_deduction: 0
output:
la_agi_exempt_income: 19_500

- name: After 2021, the exempt income will not be reduced
period: 2022
input:
state_code: LA
adjusted_gross_income: 80_000
la_retirement_exemption_person: 20_000
taxable_social_security: 1_000
tax_unit_itemizes: false
la_itemized_deductions: 0
la_federal_tax_deduction: 0
output:
la_agi_exempt_income: 21_000

- name: The second option is to reduce the exempt income by the tax
period: 2021
input:
state_code: LA
adjusted_gross_income: 80_000
la_retirement_exemption_person: 20_000
taxable_social_security: 1_000
tax_unit_itemizes: true
la_itemized_deductions: 20_000
la_federal_tax_deduction: 59_000
output:
la_agi_exempt_income: 20_737.5

Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,36 @@ class la_agi_exempt_income(Variable):
definition_period = YEAR

# Functions as subtractions.
adds = "gov.states.la.tax.income.exempt_income.sources"
def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.la.tax.income.exempt_income
total_exempt_income = add(tax_unit, period, p.sources)
if p.reduction.in_effect:
# Option 1
exempt_income_reduction = p.reduction.rate.calc(
total_exempt_income
)
# Option 2
agi = tax_unit("adjusted_gross_income", period)
exempt_income_rate = np.zeros_like(agi)
mask = agi != 0
exempt_income_rate[mask] = total_exempt_income[mask] / agi[mask]
itemizes = tax_unit("tax_unit_itemizes", period)
itemized_deductions = tax_unit("la_itemized_deductions", period)
claimed_itemized_deductions = itemizes * itemized_deductions
fed_tax_deduction = tax_unit("la_federal_tax_deduction", period)
pre_exempt_income_tax = max_(
agi - claimed_itemized_deductions - fed_tax_deduction, 0
)
income_tax_present = pre_exempt_income_tax > 0
exempt_income_tax_reduction = (
pre_exempt_income_tax * exempt_income_rate
)
# The smaller of the two options is applied
smaller_adjustment = min_(
exempt_income_tax_reduction, exempt_income_reduction
)
final_exempt_income_reduction = where(
income_tax_present, smaller_adjustment, exempt_income_reduction
)
return max_(total_exempt_income - final_exempt_income_reduction, 0)
return total_exempt_income