.Note that the argument "e" stands for "taxable income" ("zu versteuerndes Einkommen", zvE), which is the gross income minus deductions for- pension insurance fees (partly)
- health insurance fees (partly)
- healthcare insurance
- church tax, donations, etc.
proc de_ESt_2017 e {
if {$e > 256303} { #zone 5
set res [expr $e*0.45 - 16164.73]
} elseif {$e > 54057} { #zone 4
set res [expr $e*0.42 - 8475.44]
} elseif {$e > 13769} { #zone 3
set tmp [expr $e-13769]
set res [expr $tmp*($tmp*0.0000022376+0.2397) + 939.57]
} elseif {$e > 8820} { #zone 2
set tmp [expr $e-8820]
set res [expr $tmp*($tmp*0.0000100727+0.14)]
} else {set res 0.00} ;#zone 1
return $res
}AMG: I highly recommend to brace your expr-essions for performance, correctness, and security reasons.

