How the Bangladesh মোটরযানের অগ্রিম কর (motor vehicle advance tax) calculator is verified

Inputs

InputFieldType
Engine capacity (cc)engineCcnumber
Electric motor power (kW)motorKwnumber
VehiclevehicleTypestring
You own more than one motor vehicle, alone or jointlyadditionalVehicleboolean
You have another car in your own name with an equal or lower surchargesurchargeAppliesboolean

The formula

Each derived value below is computed by the Valem engine from the expression shown, in this order. Nothing else runs — there is no hidden code path.

Derived valueFieldFormula (JSONata)
Advance tax from the s.153 tablebaseAdvanceTax($c := $n(engineCc); $k := $n(motorKw); vehicleType = 'electric' ? ($k <= $const.kw200 ? $const.advanceTaxEvUpTo200 : ($k <= $const.kw300 ? $const.advanceTaxEvUpTo300 : ($k <= $const.kw400 ? $const.advanceTaxEvUpTo400 : $const.advanceTaxEvAbove400))) : ((vehicleType = 'microbus' or vehicleType = 'doubleCabinPickup') ? $const.advanceTaxMicrobusPickup : ($c <= $const.cc1500 ? $const.advanceTaxUpTo1500 : ($c <= $const.cc2000 ? $const.advanceTaxUpTo2000 : ($c <= $const.cc2500 ? $const.advanceTaxUpTo2500 : ($c <= $const.cc3000 ? $const.advanceTaxUpTo3000 : ($c <= $const.cc3500 ? $const.advanceTaxUpTo3500 : ($c <= $const.cc4500 ? $const.advanceTaxUpTo4500 : $const.advanceTaxAbove4500))))))))
Advance income taxadvanceTax$round(baseAdvanceTax * (additionalVehicle ? 1 + $const.additionalVehicleUplift : 1), 2)
Environmental surchargeenvironmentalSurcharge($c := $n(engineCc); (surchargeApplies and (vehicleType = 'car' or vehicleType = 'microbus')) ? ($c <= $const.cc1500 ? $const.surchargeUpTo1500 : ($c <= $const.cc2000 ? $const.surchargeUpTo2000 : ($c <= $const.cc2500 ? $const.surchargeUpTo2500 : ($c <= $const.cc3000 ? $const.surchargeUpTo3000 : ($c <= $const.cc3500 ? $const.surchargeUpTo3500 : $const.surchargeAbove3500))))) : 0)
Due each yearannualTotal$round(advanceTax + environmentalSurcharge, 2)

Rates and thresholds

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.

ConstantValue
cc15001500
cc20002000
cc25002500
cc30003000
cc35003500
cc45004500
advanceTaxUpTo150025000
advanceTaxUpTo200050000
advanceTaxUpTo250075000
advanceTaxUpTo3000200000
advanceTaxUpTo3500250000
advanceTaxUpTo4500400000
advanceTaxAbove4500500000
advanceTaxMicrobusPickup40000
kw200200
kw300300
kw400400
advanceTaxEvUpTo20025000
advanceTaxEvUpTo30050000
advanceTaxEvUpTo40075000
advanceTaxEvAbove400100000
additionalVehicleUplift0.5
surchargeUpTo150025000
surchargeUpTo200050000
surchargeUpTo250075000
surchargeUpTo3000150000
surchargeUpTo3500200000
surchargeAbove3500350000

Test vectors (13)

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 second 2000cc car: ৳50,000 + 50% = ৳75,000 advance tax, ৳50,000 surcharge

given engineCc2000
given motorKw150
given vehicleTypecar
given additionalVehicleyes
given surchargeAppliesyes
expect baseAdvanceTax50000
expect advanceTax75000
expect environmentalSurcharge50000
expect annualTotal125000

Case 2 — K2 one 1500cc car: ৳25,000, no surcharge

given engineCc1500
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect advanceTax25000
expect environmentalSurcharge0
expect annualTotal25000

Case 3 — K3 1501cc: ৳50,000

given engineCc1501
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect annualTotal50000

Case 4 — K4 2500cc: ৳75,000

given engineCc2500
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect annualTotal75000

Case 5 — K5 2501cc: ৳2,00,000

given engineCc2501
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect annualTotal200000

Case 6 — K6 3500cc: ৳2,50,000; 3501cc: ৳4,00,000

given engineCc3501
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect annualTotal400000

Case 7 — K7 4501cc: ৳5,00,000

given engineCc4501
given motorKw150
given vehicleTypecar
given additionalVehicleno
given surchargeAppliesno
expect annualTotal500000

Case 8 — K8 electric, 200 kW: ৳25,000

given engineCc1500
given motorKw200
given vehicleTypeelectric
given additionalVehicleno
given surchargeAppliesno
expect annualTotal25000

Case 9 — K9 electric, 401 kW, second car: ৳1,00,000 + 50%, no surcharge computed

given engineCc1500
given motorKw401
given vehicleTypeelectric
given additionalVehicleyes
given surchargeAppliesyes
expect advanceTax150000
expect environmentalSurcharge0

Case 10 — K10 second microbus of 2700cc: ৳40,000 + 50%, surcharge ৳1,50,000

given engineCc2700
given motorKw150
given vehicleTypemicrobus
given additionalVehicleyes
given surchargeAppliesyes
expect advanceTax60000
expect environmentalSurcharge150000
expect annualTotal210000

Case 11 — K11 second double-cabin pickup: ৳60,000, outside the surcharge

given engineCc2500
given motorKw150
given vehicleTypedoubleCabinPickup
given additionalVehicleyes
given surchargeAppliesyes
expect annualTotal60000

Case 12 — K12 second car above 3500cc: ৳6,00,000 + ৳3,50,000

given engineCc4000
given motorKw150
given vehicleTypecar
given additionalVehicleyes
given surchargeAppliesyes
expect advanceTax600000
expect environmentalSurcharge350000
expect annualTotal950000

Case 13 — K13 a jointly owned second 2000cc car (not in your own name): +50% only, no surcharge

given engineCc2000
given motorKw150
given vehicleTypecar
given additionalVehicleyes
given surchargeAppliesno
expect advanceTax75000
expect environmentalSurcharge0
expect annualTotal75000

Sources

Check it yourself — and reuse it

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.

← Back to the Bangladesh মোটরযানের অগ্রিম কর (motor vehicle advance tax) calculator

Built with Valem — a live, verifiable calculator you can fork and embed.