Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nova Scotia Age Amount Supplement #458

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: minor
changes:
added:
- Nova Scotia age amount supplement.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
description: Nova Scotia provides this supplement amount credit base amount.
values:
2022-01-01: 1_465
metadata:
unit: currency-CAD
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
period: year
label: Nova Scotia age amount supplement base
reference:
- title: 2022 Nova Scotia Personal Tax Credits Return
href: https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1
- title: Worksheet for the 2023 Nova Scotia TD1NS-WS Personal Tax Credits Return -- Age Amount Supplement
href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1
- title: Nova Scotia income tax act - subdivision c - Deduction for employment out of Canada - 10G
href: https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
description: Nova Scotia phases its age amount supplement out at this rate, based on taxable income.
brackets:
- threshold:
2022-01-01: 0
rate:
2022-01-01: 0
- threshold:
2022-01-01: 25_000
rate:
2022-01-01: 0.0293

metadata:
type: marginal_rate
rate_unit: /1
threshold_unit: currency-CAD
period: year
label: Nova Scotia age amount supplement phase out rate
reference:
- title: 2022 Nova Scotia Personal Tax Credits Return
href: https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1
- title: Worksheet for the 2023 Nova Scotia TD1NS-WS Personal Tax Credits Return -- Age Amount Supplement
href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1
- title: Nova Scotia income tax act - subdivision c - Deduction for employment out of Canada
href: https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
- name: Nova Scotia Age amonut supplement; eligible age with eligible taxable income below 25_000
period: 2023
input:
ns_taxable_income: 24_999
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
ns_age_amount_eligible: true
output:
ns_age_amount_supplement: 1_465

- name: Nova Scotia Age amonut supplement; eligible age with eligible taxable income between 25_000 and 75_000
period: 2023
input:
ns_taxable_income: 65_000
ns_age_amount_eligible: true
output:
ns_age_amount_supplement: 293

- name: Nova Scotia Age tax credit; eligible age with ineligible taxable income more than 75_000
period: 2023
input:
ns_taxable_income: 75_001
ns_age_amount_eligible: true
output:
ns_age_amount_supplement: 0

- name: Nova Scotia Age tax credit; ineligible age with eligible taxable income
period: 2023
input:
ns_taxable_income: 24_999
ns_age_amount_eligible: false
output:
ns_age_amount_supplement: 0

- name: Nova Scotia Age tax credit; ineligible age with ineligible taxable income
period: 2023
input:
ns_taxable_income: 75_001
ns_age_amount_eligible: false
output:
ns_age_amount_supplement: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
- name: Nova Scotia Age amount supplement; 65 is eligible age
period: 2023
input:
province_code: NS
age: 65
output:
ns_age_amount_eligible: true


- name: Nova Scotia Age amonut supplement; lower than 65 is not an eligible age
period: 2023
input:
province_code: NS
age: 64
output:
ns_age_amount_eligible: false

- name: Nova Scotia Age amonut supplement; lower than 65 is not an eligible age
period: 2023
input:
province_code: NS
age: 50
output:
ns_age_amount_eligible: false

- name: Nova Scotia Age amonut supplement; higher than 65 is eligible age
period: 2023
input:
province_code: NS
age: 67
output:
ns_age_amount_eligible: true

- name: Nova Scotia Age amonut supplement; higher than 65 is eligible age
period: 2023
input:
province_code: NS
age: 70
output:
ns_age_amount_eligible: true
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from policyengine_canada.model_api import *


class ns_age_amount_supplement(Variable):
value_type = float
entity = Person
label = "Nova Scotia age amount supplement"
unit = CAD
definition_period = YEAR
defined_for = "ns_age_amount_eligible"
reference = (
"https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1",
"https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1",
"https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28",
)

def formula(person, period, parameters):
p = parameters(
period
).gov.provinces.ns.tax.income.credits.age.supplement
taxable_income = person("ns_taxable_income", period)

# Calculate additional amount added to base amount
reduction = p.reduction.calc(taxable_income)

return max_(p.base - reduction, 0)
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
okeyiii marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from policyengine_canada.model_api import *


class ns_age_amount_eligible(Variable):
value_type = bool
entity = Person
label = "Eligible for the Nova Scotia age amount and age amount supplement"
definition_period = YEAR
defined_for = ProvinceCode.NS
reference = (
"https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1",
"https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1",
"https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28",
)

def formula(person, period, parameters):
p = parameters(period).gov.provinces.ns.tax.income.credits.age
age = person("age", period)

# is eligible for age amount supplement
return age >= p.age_eligibility
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cerate a variable
ns_age_amount.py
ns_age_amount_eligible.py

Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ class ns_age_tax_credit(Variable):
entity = Person
label = "Nova Scotia Age tax credit"
definition_period = YEAR
defined_for = ProvinceCode.NS
defined_for = "ns_age_amount_eligible"
reference = (
"https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1",
"https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1",
"https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28",
)

def formula(person, period, parameters):
age = person("age", period)
income = person("ns_taxable_income", period)
p = parameters(period).gov.provinces.ns.tax.income.credits.age
eligibility = (age >= p.age_eligibility) & (
income < p.income_eligibility
)
eligibility = income < p.income_eligibility

return eligibility * p.amount
Loading