The expressions above read these as $const. They are the figures the annual refresh replaces, so they live as data rather than being written into the formulas — which is what makes a year-on-year change a one-line diff instead of an edit to arithmetic.
Constant
Value
cc850
850
cc1000
1000
cc1199
1199
cc1299
1299
cc1300
1300
cc1499
1499
cc1599
1599
cc1600
1600
cc1800
1800
cc1999
1999
cc2000
2000
cc2500
2500
cc3000
3000
regRate850
0.005
regRate1000
0.01
regRate1300
0.015
regRate1600
0.02
regRate1800
0.03
regRate2000
0.05
regRate2500
0.07
regRate3000
0.09
regRateAbove3000
0.12
nonActiveRegIncrease
2
nonActiveAdvanceIncrease
1
adv234Upto1199
1500
adv234Upto1299
1750
adv234Upto1499
2500
adv234Upto1599
3750
adv234Upto1999
4500
adv234From2000
10000
adv234LumpSumUpto1000
10000
ictLifetimeUpto1000
20000
ictRateUpto2000
0.0025
ictRateAbove2000
0.0035
Test vectors (7)
Every case is executed against this model on each build, by the Java engine and independently by a JavaScript one. A mismatch of a single cent fails the build, so the page cannot ship advertising a figure the model no longer produces.
Case 1 — K1 a new 1500cc car with a Rs6,000,000 invoice: s.231B 2% Rs120,000, ICT tax 0.25% Rs15,000, s.234 Rs3,750
given vehicleValue
6000000
given engineCc
1500
given activeTaxpayer
yes
given newCar
yes
expect registrationAdvanceTax
120000
expect motorVehicleTaxAnnual
15000
expect advanceTaxAnnual
3750
expect annualTotal
18750
expect firstYearTotal
138750
Case 2 — K2 the same car, owner not on the active taxpayers’ list: s.231B tripled, s.234 doubled
given vehicleValue
6000000
given engineCc
1500
given activeTaxpayer
no
given newCar
yes
expect registrationAdvanceTax
360000
expect advanceTaxAnnual
7500
expect firstYearTotal
382500
Case 3 — K3 a new 1000cc car for Rs3,000,000: 1% on registration and Rs20,000 + Rs10,000 for life
given vehicleValue
3000000
given engineCc
1000
given activeTaxpayer
yes
given newCar
yes
expect registrationRate
0.01
expect registrationAdvanceTax
30000
expect lifetimeTax
30000
expect annualTotal
0
expect firstYearTotal
60000
Case 4 — K4 a 2400cc car already registered, Rs20,000,000 invoice: 0.35% Rs70,000 + Rs10,000 a year
given vehicleValue
20000000
given engineCc
2400
given activeTaxpayer
yes
given newCar
no
expect registrationAdvanceTax
0
expect motorVehicleTaxAnnual
70000
expect advanceTaxAnnual
10000
expect annualTotal
80000
Case 5 — K5 a new 3000cc car for Rs30,000,000: 9% on registration
given vehicleValue
30000000
given engineCc
3000
given activeTaxpayer
yes
given newCar
yes
expect registrationRate
0.09
expect registrationAdvanceTax
2700000
Case 6 — K6 a new 660cc car for Rs2,500,000: 0.5% on registration
given vehicleValue
2500000
given engineCc
660
given activeTaxpayer
yes
given newCar
yes
expect registrationAdvanceTax
12500
expect lifetimeTax
30000
Case 7 — K7 a 1300cc car: 1.5% on registration, Rs2,500 under s.234
The whole model as JSON — inputs, outputs, formulas, vectors and sources in one re-runnable document.
This model is published under CC BY 4.0: use it, adapt it, build on it, with attribution. The licence covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds are law, and nobody licenses those; the sources above are where they come from.