Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
.bmf.taxapi.taxxmls.2022.0.0.source-code.Lohnsteuer2006Big.xml Maven / Gradle / Ivy
<PAP name="Lohnsteuer2006Big" version="1.0" versionNummer="1.0">
<VARIABLES>
<!-- EINGABEPARAMETER -->
<INPUTS>
<!-- Auf die Vollendung des 64. Lebensjahres folgende
Kalenderjahr (erforderlich, wenn ALTER1=1) -->
<INPUT name="AJAHR" type="int">
</INPUT>
<!-- 1, wenn das 64. Lebensjahr zu Beginn des Kalenderjahres vollendet wurde, in dem
der Lohnzahlungszeitraum endet (§ 24 a EStG), sonst = 0 -->
<INPUT name="ALTER1" type="int">
</INPUT>
<!-- In der Lohnsteuerkarte des Arbeitnehmers eingetragener Hinzurechnungsbetrag
fuer den Lohnzahlungszeitraum in Cents -->
<INPUT name="HINZUR" type="BigDecimal">
</INPUT>
<!-- Jahresfreibetrag nach Maßgabe der Eintragungen auf der
Lohnsteuerkarte in Cents (ggf. 0) -->
<INPUT name="JFREIB" type="BigDecimal">
</INPUT>
<!-- Jahreshinzurechnungsbetrag in Cents (ggf. 0) -->
<INPUT name="JHINZU" type="BigDecimal">
</INPUT>
<!-- Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezuege und
ohne Verguetung fuer mehrjaehrige Taetigkeit in Cents (ggf. 0)
Anmerkung: Die Eingabe dieses Feldes ist erforderlich bei Eingabe
„sonstiger Bezuege“ (Feld SONSTB) oder bei Eingabe der „Verguetung
fuer mehrjaehrige Taetigkeit“ (Feld VMT). -->
<INPUT name="JRE4" type="BigDecimal">
</INPUT>
<!-- In JRE4 enthaltene Versorgungsbezuege in Cents (ggf. 0) -->
<INPUT name="JVBEZ" type="BigDecimal">
</INPUT>
<!-- 1 = der Arbeitnehmer ist im Lohnzahlungszeitraum in der gesetzlichen
Rentenversicherung versicherungsfrei und gehoert zu den in
§ 10 c Abs. 3 EStG genannten Personen.
Bei anderen Arbeitnehmern ist „0“ einzusetzen.
Fuer die Zuordnung sind allein die dem Arbeitgeber ohnehin bekannten
Tatsachen maßgebend; zusaetzliche Ermittlungen braucht
der Arbeitgeber nicht anzustellen. -->
<INPUT name="KRV" type="int">
</INPUT>
<!-- Lohnzahlungszeitraum:
1 = Jahr
2 = Monat
3 = Woche
4 = Tag -->
<INPUT name="LZZ" type="int">
</INPUT>
<!-- Religionsgemeinschaft des Arbeitnehmers lt. Lohnsteuerkarte (bei
keiner Religionszugehoerigkeit = 0) -->
<INPUT name="R" type="int">
</INPUT>
<!-- Steuerpflichtiger Arbeitslohn vor Beruecksichtigung der Freibetraege
fuer Versorgungsbezuege, des Altersentlastungsbetrags und des auf
der Lohnsteuerkarte fuer den Lohnzahlungszeitraum eingetragenen
Freibetrags in Cents. -->
<INPUT name="RE4" type="BigDecimal">
</INPUT>
<!-- Sonstige Bezuege (ohne Verguetung aus mehrjaehriger Taetigkeit) einschliesslich
Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
soweit es sich nicht um Bezuege fuer mehrere Jahre handelt in Cents (ggf. 0) -->
<INPUT name="SONSTB" type="BigDecimal">
</INPUT>
<!-- Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
soweit es sich nicht um Bezuege fuer mehrere Jahre handelt
(in SONSTB enthalten) in Cents -->
<INPUT name="STERBE" type="BigDecimal" regex_test="" regex_transform="">
</INPUT>
<!-- Steuerklasse:
1 = I
2 = II
3 = III
4 = IV
5 = V
6 = VI -->
<INPUT name="STKL" type="int">
</INPUT>
<!-- In RE4 enthaltene Versorgungsbezuege in Cents (ggf. 0) -->
<INPUT name="VBEZ" type="BigDecimal">
</INPUT>
<!-- Vorsorgungsbezug im Januar 2005 bzw. fuer den ersten vollen Monat
in Cents-->
<INPUT name="VBEZM" type="BigDecimal">
</INPUT>
<!-- Voraussichtliche Sonderzahlungen im Kalenderjahr des Versorgungsbeginns
bei Versorgungsempfaengern ohne Sterbegeld, Kapitalauszahlungen/Abfindungen
bei Versorgungsbezuegen in Cents-->
<INPUT name="VBEZS" type="BigDecimal">
</INPUT>
<!-- In SONSTB enthaltene Versorgungsbezuege einschliesslich Sterbegeld
in Cents (ggf. 0) -->
<INPUT name="VBS" type="BigDecimal">
</INPUT>
<!-- Jahr, in dem der Versorgungsbezug erstmalig gewaehrt wurde; werden
mehrere Versorgungsbezuege gezahlt, so gilt der aelteste erstmalige Bezug -->
<INPUT name="VJAHR" type="int" regex_test="" regex_transform="">
</INPUT>
<!-- Kapitalauszahlungen/Abfindungen bei Versorgungsbezuegen fuer mehrere Jahre in Cents (ggf. 0) -->
<INPUT name="VKAPA" type="BigDecimal" regex_test="" regex_transform="">
</INPUT>
<!-- Verguetung fuer mehrjaehrige Taetigkeit ohne Kapitalauszahlungen/Abfindungen bei
Versorgungsbezuegen in Cents (ggf. 0) -->
<INPUT name="VMT" type="BigDecimal" regex_test="" regex_transform="">
</INPUT>
<!-- In der Lohnsteuerkarte des Arbeitnehmers eingetragener Freibetrag
fuer den Lohnzahlungszeitraum in Cents -->
<INPUT name="WFUNDF" type="BigDecimal" regex_test="" regex_transform="">
</INPUT>
<!-- Zahl der Freibetraege fuer Kinder (eine Dezimalstelle, nur bei Steuerklassen
I, II, III und IV) -->
<INPUT name="ZKF" type="BigDecimal" regex_test="" regex_transform="">
</INPUT>
<!-- Zahl der Monate, fuer die Versorgungsbezuege gezahlt werden (nur
erforderlich bei Jahresberechnung (LZZ = 1) -->
<INPUT name="ZMVB" type="int" regex_test="" regex_transform="">
</INPUT>
</INPUTS>
<!-- AUSGABEPARAMETER -->
<OUTPUTS type="STANDARD">
<!-- Bemessungsgrundlage fuer die Kirchenlohnsteuer in Cents -->
<OUTPUT name="BK" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Bemessungsgrundlage der sonstigen Einkuenfte (ohne Verguetung
fuer mehrjaehrige Taetigkeit) fuer die Kirchenlohnsteuer in Cents -->
<OUTPUT name="BKS" type="BigDecimal" default="new BigDecimal(0)" />
<OUTPUT name="BKV" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Fuer den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cents -->
<OUTPUT name="LSTLZZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Fuer den Lohnzahlungszeitraum einzubehaltender Solidaritaetszuschlag
in Cents -->
<OUTPUT name="SOLZLZZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Solidaritaetszuschlag fuer sonstige Bezuege (ohne Verguetung fuer mehrjaehrige
Taetigkeit) in Cents -->
<OUTPUT name="SOLZS" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Solidaritaetszuschlag fuer die Verguetung fuer mehrjaehrige Taetigkeit in
Cents -->
<OUTPUT name="SOLZV" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Lohnsteuer fuer sonstige Einkuenfte (ohne Verguetung fuer mehrjaehrige
Taetigkeit) in Cents -->
<OUTPUT name="STS" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Lohnsteuer fuer Verguetung fuer mehrjaehrige Taetigkeit in Cents -->
<OUTPUT name="STV" type="BigDecimal" default="new BigDecimal(0)" />
</OUTPUTS>
<!-- INTERNE FELDER -->
<INTERNALS>
<!-- Altersentlastungsbetrag nach Alterseinkuenftegesetz in Cents -->
<INTERNAL name="ALTE" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Arbeitnehmer-Pauschbetrag in EURO -->
<INTERNAL name="ANP" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
auf ganze Cents abgerundet -->
<INTERNAL name="ANTEIL1" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
auf ganze Cents aufgerundet -->
<INTERNAL name="ANTEIL2" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Bemessungsgrundlage fuer Altersentlastungsbetrag in Cents -->
<INTERNAL name="BMG" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Differenz zwischen ST1 und ST2 in EURO -->
<INTERNAL name="DIFF" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Entlastungsbetrag fuer Alleinerziehende in EURO -->
<INTERNAL name="EFA" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Versorgungsfreibetrag in Cents -->
<INTERNAL name="FVB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zuschlag zum Versorgungsfreibetrag in EURO -->
<INTERNAL name="FVBZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Massgeblich maximaler Versorgungsfreibetrag in Cents -->
<INTERNAL name="HFVB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Nummer der Tabellenwerte fuer Versorgungsparameter -->
<INTERNAL name="J" type="int" default="0" />
<!-- Jahressteuer nach § 51a EStG, aus der Solidaritaetszuschlag und
Bemessungsgrundlage fuer die Kirchenlohnsteuer ermittelt werden in EURO -->
<INTERNAL name="JBMG" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Jahreswert, dessen Anteil fuer einen Lohnzahlungszeitraum in
UPANTEIL errechnet werden soll in Cents -->
<INTERNAL name="JW" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Nummer der Tabellenwerte fuer Parameter bei Altersentlastungsbetrag -->
<INTERNAL name="K" type="int" default="0" />
<!-- Kennzeichen bei Verguetung fuer mehrjaehrige Taetigkeit
0 = beim Vorwegabzug ist ZRE4VP zu beruecksichtigen
1 = beim Vorwegabzug ist ZRE4VP1 zu beruecksichtigen -->
<INTERNAL name="KENNZ" type="int" default="0" />
<!-- Summe der Freibetraege fuer Kinder in EURO -->
<INTERNAL name="KFB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Kennzahl fuer die Einkommensteuer-Tabellenart:
1 = Grundtabelle
2 = Splittingtabelle -->
<INTERNAL name="KZTAB" type="int" default="0" />
<!-- Jahreslohnsteuer in EURO -->
<INTERNAL name="LSTJAHR" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zwischenfelder der Jahreslohnsteuer in Cents -->
<INTERNAL name="LST1" type="BigDecimal" default="new BigDecimal(0)" />
<INTERNAL name="LST2" type="BigDecimal" default="new BigDecimal(0)" />
<INTERNAL name="LST3" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Mindeststeuer fuer die Steuerklassen V und VI in EURO -->
<INTERNAL name="MIST" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Arbeitslohn des Lohnzahlungszeitraums nach Abzug der Freibetraege
fuer Versorgungsbezuege, des Altersentlastungsbetrags und des
in der Lohnsteuerkarte eingetragenen Freibetrags und Hinzurechnung
eines Hinzurechnungsbetrags in Cents. Entspricht dem Arbeitslohn,
fuer den die Lohnsteuer im personellen Verfahren aus der
zum Lohnzahlungszeitraum gehoerenden Tabelle abgelesen wuerde -->
<INTERNAL name="RE4LZZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Arbeitslohn des Lohnzahlungszeitraums nach Abzug der Freibetraege
fuer Versorgungsbezuege und des Altersentlastungsbetrags in
Cents zur Berechnung der Vorsorgepauschale -->
<INTERNAL name="RE4LZZV" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Rechenwert in Gleitkommadarstellung -->
<INTERNAL name="RW" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Sonderausgaben-Pauschbetrag in EURO -->
<INTERNAL name="SAP" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Freigrenze fuer den Solidaritaetszuschlag in EURO -->
<INTERNAL name="SOLZFREI" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Solidaritaetszuschlag auf die Jahreslohnsteuer in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="SOLZJ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zwischenwert fuer den Solidaritaetszuschlag auf die Jahreslohnsteuer
in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="SOLZMIN" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Tarifliche Einkommensteuer in EURO -->
<INTERNAL name="ST" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Tarifliche Einkommensteuer auf das 1,25-fache ZX in EURO -->
<INTERNAL name="ST1" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Tarifliche Einkommensteuer auf das 0,75-fache ZX in EURO -->
<INTERNAL name="ST2" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Bemessungsgrundlage fuer den Versorgungsfreibetrag in Cents -->
<INTERNAL name="VBEZB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Hoechstbetrag der Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C -->
<INTERNAL name="VHB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Vorsorgepauschale in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSP" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C -->
<INTERNAL name="VSPN" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zwischenwert 1 bei der Berechnung der Vorsorgepauschale nach
dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSP1" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zwischenwert 2 bei der Berechnung der Vorsorgepauschale nach
dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSP2" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 3 EStG in EURO -->
<INTERNAL name="VSPKURZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 2 EStG in EURO -->
<INTERNAL name="VSPMAX1" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 3 EStG in EURO -->
<INTERNAL name="VSPMAX2" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Vorsorgepauschale nach § 10c Abs. 2 Satz 2 EStG vor der Hoechstbetragsberechnung
in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSPO" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Fuer den Abzug nach § 10c Abs. 2 Nrn. 2 und 3 EStG verbleibender
Rest von VSPO in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSPREST" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 1 EStG
in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="VSPVOR" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zu versteuerndes Einkommen gem. § 32a Abs. 1 und 2 EStG
(2 Dezimalstellen) -->
<INTERNAL name="X" type="BigDecimal" default="new BigDecimal(0)" />
<!-- gem. § 32a Abs. 1 EStG (6 Dezimalstellen) -->
<INTERNAL name="Y" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Auf einen Jahreslohn hochgerechnetes RE4LZZ in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="ZRE4" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Auf einen Jahreslohn hochgerechnetes RE4LZZV zur Berechnung
der Vorsorgepauschale in EURO, C (2 Dezimalstellen) -->
<INTERNAL name="ZRE4VP" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Sicherungsfeld von ZRE4VP in EURO,C bei der Berechnung des Vorwegabzugs
fuer die Verguetung fuer mehrjaehrige Taetigkeit -->
<INTERNAL name="ZRE4VP1" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Feste Tabellenfreibetraege (ohne Vorsorgepauschale) in EURO -->
<INTERNAL name="ZTABFB" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Auf einen Jahreslohn hochgerechnetes (VBEZ abzueglich FVB) in
EURO, C (2 Dezimalstellen) -->
<INTERNAL name="ZVBEZ" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zu versteuerndes Einkommen in EURO -->
<INTERNAL name="ZVE" type="BigDecimal" default="new BigDecimal(0)" />
<!-- Zwischenfelder zu X fuer die Berechnung der Steuer nach § 39b
Abs. 2 Satz 8 EStG in EURO.-->
<INTERNAL name="ZX" type="BigDecimal" default="new BigDecimal(0)" />
<INTERNAL name="ZZX" type="BigDecimal" default="new BigDecimal(0)" />
<INTERNAL name="HOCH" type="BigDecimal" default="new BigDecimal(0)" />
<INTERNAL name="VERGL" type="BigDecimal" default="new BigDecimal(0)" />
</INTERNALS>
</VARIABLES>
<CONSTANTS>
<!-- Tabelle fuer die Vomhundertsaetze des Versorgungsfreibetrags -->
<CONSTANT name="TAB1" type="double[]" value="{0.0, 0.400, 0.384, 0.368, 0.352, 0.336, 0.320, 0.304, 0.288, 0.272, 0.256, 0.240, 0.224, 0.208, 0.192, 0.176, 0.160, 0.152, 0.144, 0.136, 0.128, 0.120, 0.112, 0.104, 0.096, 0.088, 0.080, 0.072, 0.064, 0.056, 0.048, 0.040, 0.032, 0.024, 0.016, 0.008, 0.000}" />
<!-- Tabelle fuer die Hoechstbetrage des Versorgungsfreibetrags -->
<CONSTANT name="TAB2" type="long[]" value="{0, 3000, 2880, 2760, 2640, 2520, 2400, 2280, 2160, 2040, 1920, 1800, 1680, 1560, 1440, 1320, 1200, 1140, 1080, 1020, 960, 900, 840, 780, 720, 660, 600, 540, 480, 420, 360, 300, 240, 180, 120, 60, 0}" />
<!-- Tabelle fuer die Zuschlaege zum Versorgungsfreibetrag -->
<CONSTANT name="TAB3" type="long[]" value="{0, 900, 864, 828, 792, 756, 720, 684, 648, 612, 576, 540, 504, 468, 432, 396, 360, 342, 324, 306, 288, 270, 252, 234, 216, 198, 180, 162, 144, 126, 108, 90, 72, 54, 36, 18, 0}" />
<!-- Tabelle fuer die Vomhundertsaetze des Altersentlastungsbetrags -->
<CONSTANT name="TAB4" type="double[]" value="{0.0, 0.400, 0.384, 0.368, 0.352, 0.336, 0.320, 0.304, 0.288, 0.272, 0.256, 0.240, 0.224, 0.208, 0.192, 0.176, 0.160, 0.152, 0.144, 0.136, 0.128, 0.120, 0.112, 0.104, 0.096, 0.088, 0.080, 0.072, 0.064, 0.056, 0.048, 0.040, 0.032, 0.024, 0.016, 0.008, 0.000}" />
<!-- Tabelle fuer die Hoechstbetraege des Altersentlastungsbetrags -->
<CONSTANT name="TAB5" type="long[]" value="{0, 1900, 1824, 1748, 1672, 1596, 1520, 1444, 1368, 1292, 1216, 1140, 1064, 988, 912, 836, 760, 722, 684, 646, 608, 570, 532, 494, 456, 418, 380, 342, 304, 266, 228, 190, 152, 114, 76, 38, 0}" />
<!-- Zahlenkonstanten fuer im Plan oft genutzte BigDecimal Werte -->
<CONSTANT name="ZAHL0" type="BigDecimal" value="new BigDecimal(0)" />
<CONSTANT name="ZAHL1" type="BigDecimal" value="new BigDecimal(1)" />
<CONSTANT name="ZAHL2" type="BigDecimal" value="new BigDecimal(2)" />
<CONSTANT name="ZAHL3" type="BigDecimal" value="new BigDecimal(3)" />
<CONSTANT name="ZAHL4" type="BigDecimal" value="new BigDecimal(4)" />
<CONSTANT name="ZAHL5" type="BigDecimal" value="new BigDecimal(5)" />
<CONSTANT name="ZAHL6" type="BigDecimal" value="new BigDecimal(6)" />
<CONSTANT name="ZAHL7" type="BigDecimal" value="new BigDecimal(7)" />
<CONSTANT name="ZAHL8" type="BigDecimal" value="new BigDecimal(8)" />
<CONSTANT name="ZAHL9" type="BigDecimal" value="new BigDecimal(9)" />
<CONSTANT name="ZAHL10" type="BigDecimal" value="new BigDecimal(10)" />
<CONSTANT name="ZAHL11" type="BigDecimal" value="new BigDecimal(11)" />
<CONSTANT name="ZAHL12" type="BigDecimal" value="new BigDecimal(12)" />
<CONSTANT name="ZAHL100" type="BigDecimal" value="new BigDecimal(100)" />
<CONSTANT name="ZAHL360" type="BigDecimal" value="new BigDecimal(360)" />
</CONSTANTS>
<METHODS>
<!-- PROGRAMMABLAUFPLAN 2006 -->
<MAIN>
<EXECUTE method="MRE4LZZ" />
<EVAL exec="KENNZ = 0" />
<EVAL exec="RE4LZZ = RE4.subtract(FVB).subtract(ALTE).subtract(WFUNDF).add(HINZUR)" />
<EVAL exec="RE4LZZV = RE4.subtract(FVB).subtract(ALTE)" />
<EXECUTE method="MRE4" />
<EXECUTE method="MZTABFB" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LSTJAHR = ST" />
<EVAL exec="JW = LSTJAHR.multiply(ZAHL100)" />
<EXECUTE method="UPANTEIL" />
<EVAL exec="LSTLZZ = ANTEIL1" />
<IF expr="ZKF.compareTo(ZAHL0) == 1">
<THEN>
<EVAL exec="ZTABFB = ZTABFB.add(KFB)" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="JBMG = ST" />
</THEN>
<ELSE>
<EVAL exec="JBMG = LSTJAHR" />
</ELSE>
</IF>
<EXECUTE method="MSOLZ" />
<EXECUTE method="MSONST" />
<EXECUTE method="MVMT" />
</MAIN>
<!-- Freibetraege fuer Versorgungsbezuege, Altersentlastungsbetrag (§39b Abs. 2 Satz 2 EStG)
PAP Seite 10 -->
<METHOD name="MRE4LZZ">
<IF expr="VBEZ.compareTo(ZAHL0) == 0" >
<THEN>
<EVAL exec="FVBZ = ZAHL0" />
<EVAL exec="FVB = ZAHL0" />
</THEN>
<ELSE>
<IF expr="VJAHR < 2006">
<THEN>
<EVAL exec="J = 1" />
</THEN>
<ELSE>
<IF expr="VJAHR < 2040">
<THEN>
<EVAL exec="J = VJAHR - 2004" />
</THEN>
<ELSE>
<EVAL exec="J = 36" />
</ELSE>
</IF>
</ELSE>
</IF>
<IF expr="LZZ == 1" >
<THEN>
<IF expr="((STERBE.add(VKAPA)).compareTo(ZAHL0)) == 1">
<THEN>
<EVAL exec="VBEZB = (VBEZM.multiply(BigDecimal.valueOf(ZMVB))).add(VBEZS)" />
<EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] * 100)" />
<EVAL exec="FVBZ = BigDecimal.valueOf(TAB3[J])" />
</THEN>
<ELSE>
<EVAL exec="VBEZB = (VBEZM.multiply(BigDecimal.valueOf(ZMVB))).add(VBEZS)" />
<EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] / 12 * ZMVB * 100)" />
<EVAL exec="FVBZ = (BigDecimal.valueOf(TAB3[J] / 12 * ZMVB)).setScale(0, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EVAL exec="VBEZB = ((VBEZM.multiply(ZAHL12)).add(VBEZS)).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] * 100)" />
<EVAL exec="FVBZ = BigDecimal.valueOf(TAB3[J])" />
</ELSE>
</IF>
<EVAL exec="FVB = (VBEZB.multiply(BigDecimal.valueOf(TAB1[J]))).setScale(0, BigDecimal.ROUND_UP)" />
<IF expr="FVB.compareTo(HFVB) == 1" >
<THEN>
<EVAL exec="FVB = HFVB" />
</THEN>
<ELSE>
</ELSE>
</IF>
<EVAL exec="JW = FVB" />
<EXECUTE method="UPANTEIL" />
<EVAL exec="FVB = ANTEIL2" />
</ELSE>
</IF>
<IF expr="ALTER1 == 0">
<THEN>
<EVAL exec="ALTE = ZAHL0" />
</THEN>
<ELSE>
<IF expr="AJAHR < 2006">
<THEN>
<EVAL exec="K = 1" />
</THEN>
<ELSE>
<IF expr="AJAHR < 2040">
<THEN>
<EVAL exec="K = AJAHR - 2004" />
</THEN>
<ELSE>
<EVAL exec="K = 36" />
</ELSE>
</IF>
</ELSE>
</IF>
<EVAL exec="BMG = RE4.subtract(VBEZ)" />
<EVAL exec="ALTE = (BMG.multiply(BigDecimal.valueOf(TAB4[K]))).setScale(0, BigDecimal.ROUND_UP)" />
<EVAL exec="JW = BigDecimal.valueOf(TAB5[K] * 100)" />
<EXECUTE method="UPANTEIL" />
<IF expr="ALTE.compareTo(ANTEIL2) == 1">
<THEN>
<EVAL exec="ALTE = ANTEIL2" />
</THEN>
<ELSE>
</ELSE>
</IF>
</ELSE>
</IF>
</METHOD>
<!-- Massgeblicher Arbeitslohn fuer die Jahreslohnsteuer
PAP Seite 12 -->
<METHOD name="MRE4">
<IF expr="LZZ == 1">
<THEN>
<EVAL exec="ZRE4 = RE4LZZ.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZRE4VP = RE4LZZV.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZVBEZ = (VBEZ.subtract(FVB)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="LZZ == 2">
<THEN>
<EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="LZZ == 3">
<THEN>
<EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
</ELSE>
</IF>
</ELSE>
</IF>
</ELSE>
</IF>
<IF expr="ZRE4.compareTo(ZAHL0) == -1">
<THEN>
<EVAL exec="ZRE4 = ZAHL0" />
</THEN>
<ELSE>
</ELSE>
</IF>
<IF expr="ZVBEZ.compareTo(ZAHL0) == -1">
<THEN>
<EVAL exec="ZVBEZ = ZAHL0" />
</THEN>
<ELSE>
</ELSE>
</IF>
</METHOD>
<!-- Ermittlung der festen Tabellenfreibetraege (ohne Vorsorgepauschale)
PAP Seite 13 -->
<METHOD name="MZTABFB">
<EVAL exec="ANP = ZAHL0" />
<IF expr="ZVBEZ.compareTo(ZAHL0) == 1">
<THEN>
<IF expr="ZVBEZ.compareTo(FVBZ) == -1">
<THEN>
<!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
<EVAL exec="FVBZ = ZVBEZ.setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
<IF expr="STKL < 6">
<THEN>
<IF expr="ZVBEZ.compareTo(ZAHL0) == 1">
<THEN>
<IF expr="(ZVBEZ.subtract(FVBZ)).compareTo(BigDecimal.valueOf(102)) == -1">
<THEN>
<!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
<EVAL exec="ANP = (ZVBEZ.subtract(FVBZ)).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="ANP = BigDecimal.valueOf(102)" />
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
<IF expr="STKL < 6">
<THEN>
<IF expr="ZRE4.compareTo(ZVBEZ) == 1">
<THEN>
<IF expr="(ZRE4.subtract(ZVBEZ)).compareTo(BigDecimal.valueOf(920)) == -1">
<THEN>
<!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
<EVAL exec="ANP = (ANP.add(ZRE4).subtract(ZVBEZ)).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="ANP = ANP.add(BigDecimal.valueOf(920))" />
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
<EVAL exec="KZTAB = 1" />
<IF expr="STKL == 1">
<!-- ZKF ist double und KFB ist integer. Nachkommastellen abschneiden! 4x!!! -->
<THEN>
<EVAL exec="SAP = BigDecimal.valueOf(36)" />
<EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="STKL == 2">
<THEN>
<EVAL exec="EFA = BigDecimal.valueOf(1308)" />
<EVAL exec="SAP = BigDecimal.valueOf(36)" />
<EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="STKL == 3">
<THEN>
<EVAL exec="KZTAB = 2" />
<EVAL exec="SAP = BigDecimal.valueOf(72)" />
<EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="STKL == 4">
<THEN>
<EVAL exec="SAP = BigDecimal.valueOf(36)" />
<EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(2904))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="KFB = ZAHL0" />
</ELSE>
</IF>
</ELSE>
</IF>
</ELSE>
</IF>
</ELSE>
</IF>
<EVAL exec="ZTABFB = EFA.add(ANP).add(SAP).add(FVBZ)" />
</METHOD>
<!-- Ermittlung Jahreslohnsteuer
PAP Seite 14 -->
<METHOD name="MLSTJAHR">
<IF expr="STKL < 5">
<THEN>
<EXECUTE method="UPEVP" />
</THEN>
<ELSE>
<EVAL exec="VSP = ZAHL0" />
</ELSE>
</IF>
<!-- ZVE ist in EURO, ZRE4 in EURO,Cent -->
<EVAL exec="ZVE = (ZRE4.subtract(ZTABFB).subtract(VSP)).setScale(0, BigDecimal.ROUND_DOWN)" />
<IF expr="ZVE.compareTo(ZAHL1) == -1">
<THEN>
<EVAL exec="ZVE = ZAHL0" />
<EVAL exec="X = ZAHL0" />
</THEN>
<ELSE>
<EVAL exec="X = ZVE.divide(BigDecimal.valueOf(KZTAB), 0, BigDecimal.ROUND_DOWN)" />
</ELSE>
</IF>
<IF expr="STKL < 5">
<THEN>
<EXECUTE method="UPTAB05" />
</THEN>
<ELSE>
<EXECUTE method="MST5_6" />
</ELSE>
</IF>
</METHOD>
<!-- Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG)
PAP Seite 15 -->
<METHOD name="UPEVP">
<IF expr="KRV == 1">
<THEN>
<EVAL exec="VSP1 = ZAHL0" />
</THEN>
<ELSE>
<IF expr="ZRE4VP.compareTo(BigDecimal.valueOf(63000)) == 1">
<THEN>
<EVAL exec="ZRE4VP = BigDecimal.valueOf(63000)" />
</THEN>
<ELSE>
</ELSE>
</IF>
<EVAL exec="VSP1 = (ZRE4VP.multiply(BigDecimal.valueOf(0.24))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="VSP1 = (VSP1.multiply(BigDecimal.valueOf(0.0975))).setScale(2, BigDecimal.ROUND_DOWN)" />
</ELSE>
</IF>
<EVAL exec="VSP2 = ZRE4VP.multiply(BigDecimal.valueOf(0.11))" />
<EVAL exec="VHB = BigDecimal.valueOf(1500 * KZTAB)" />
<IF expr="VSP2.compareTo(VHB) == 1">
<THEN>
<EVAL exec="VSP2 = VHB" />
</THEN>
<ELSE>
</ELSE>
</IF>
<!-- Erst auf 2 nachkommastellen kuerzen, dann aufrunden, sonst
wird die Jahreslohnsteuer ggf. um 1 EUR zu hoch angesetzt.
Hinweis: wieder aufgehoben, da bei VSP1 eine Rundung fehlte. -->
<EVAL exec="VSPN = (VSP1.add(VSP2)).setScale(0, BigDecimal.ROUND_UP)" />
<EXECUTE method="MVSP" />
<IF expr="VSPN.compareTo(VSP) == 1">
<THEN>
<EVAL exec="VSP = VSPN.setScale(2, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
</ELSE>
</IF>
</METHOD>
<!-- Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG) Vergleichsberechnung
fuer Guenstigerpruefung
PAP Seite 16 -->
<METHOD name="MVSP">
<IF expr="KENNZ == 1">
<THEN>
<EVAL exec="VSPO = ZRE4VP1.multiply(BigDecimal.valueOf(0.2))" />
</THEN>
<ELSE>
<EVAL exec="VSPO = ZRE4VP.multiply(BigDecimal.valueOf(0.2))" />
</ELSE>
</IF>
<EVAL exec="VSPVOR = BigDecimal.valueOf(KZTAB * 3068)" />
<EVAL exec="VSPMAX1 = BigDecimal.valueOf(KZTAB * 1334)" />
<EVAL exec="VSPMAX2 = BigDecimal.valueOf(KZTAB * 667)" />
<EVAL exec="VSPKURZ = BigDecimal.valueOf(KZTAB * 1134)" />
<IF expr="KRV == 1">
<THEN>
<IF expr="VSPO.compareTo(VSPKURZ) == 1">
<THEN>
<EVAL exec="VSP = VSPKURZ" />
</THEN>
<ELSE>
<EVAL exec="VSP = VSPO.setScale(2, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EXECUTE method="UMVSP" />
</ELSE>
</IF>
</METHOD>
<!-- Vorsorgepauschale
PAP Seite 17 -->
<METHOD name="UMVSP">
<IF expr="KENNZ == 1">
<THEN>
<EVAL exec="VSPVOR = VSPVOR.subtract(ZRE4VP1.multiply(BigDecimal.valueOf(0.16)))" />
</THEN>
<ELSE>
<EVAL exec="VSPVOR = VSPVOR.subtract(ZRE4VP.multiply(BigDecimal.valueOf(0.16)))" />
</ELSE>
</IF>
<IF expr="VSPVOR.compareTo(ZAHL0) == -1">
<THEN>
<EVAL exec="VSPVOR = ZAHL0" />
</THEN>
<ELSE>
</ELSE>
</IF>
<IF expr="VSPO.compareTo(VSPVOR) == 1">
<THEN>
<EVAL exec="VSP = VSPVOR" />
<EVAL exec="VSPREST = VSPO.subtract(VSPVOR)" />
<IF expr="VSPREST.compareTo(VSPMAX1) == 1">
<THEN>
<EVAL exec="VSP = VSP.add(VSPMAX1)" />
<EVAL exec="VSPREST = (VSPREST.subtract(VSPMAX1)).divide(ZAHL2, 2, BigDecimal.ROUND_UP)" />
<IF expr="VSPREST.compareTo(VSPMAX2) == 1">
<THEN>
<EVAL exec="VSP = (VSP.add(VSPMAX2)).setScale(0, BigDecimal.ROUND_UP)" />
</THEN>
<ELSE>
<EVAL exec="VSP = (VSP.add(VSPREST)).setScale(0, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EVAL exec="VSP = (VSP.add(VSPREST)).setScale(0, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EVAL exec="VSP = VSPO.setScale(0, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</METHOD>
<!-- Lohnsteuer fuer die Steuerklassen V und VI (§ 39b Abs. 2 Satz 8 EStG)
PAP Seite 18 -->
<METHOD name="MST5_6">
<EVAL exec="ZZX = X" />
<IF expr="ZZX.compareTo(BigDecimal.valueOf(25812)) == 1">
<THEN>
<EVAL exec="ZX = BigDecimal.valueOf(25812)" />
<EXECUTE method="UP5_6" />
<EVAL exec="ST = (ST.add((ZZX.subtract(BigDecimal.valueOf(25812))).multiply(BigDecimal.valueOf(0.42)))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="ZX = ZZX" />
<EXECUTE method="UP5_6" />
<IF expr="ZZX.compareTo(BigDecimal.valueOf(9144)) == 1">
<THEN>
<EVAL exec="VERGL = ST" />
<EVAL exec="ZX = BigDecimal.valueOf(9144)" />
<EXECUTE method="UP5_6" />
<EVAL exec="HOCH = (ST.add((ZZX.subtract(BigDecimal.valueOf(9144))).multiply(BigDecimal.valueOf(0.42)))).setScale(0, BigDecimal.ROUND_DOWN)" />
<IF expr="HOCH.compareTo(VERGL) == -1">
<THEN>
<EVAL exec="ST = HOCH" />
</THEN>
<ELSE>
<EVAL exec="ST = VERGL" />
</ELSE>
</IF>
</THEN>
<ELSE>
</ELSE>
</IF>
</ELSE>
</IF>
</METHOD>
<!-- Lohnsteuer fuer die Steuerklassen V und VI (§ 39b Abs. 2 Satz 8 EStG)
PAP Seite 18 -->
<METHOD name="UP5_6">
<EVAL exec="X = ZX.multiply(BigDecimal.valueOf(1.25))" />
<EXECUTE method="UPTAB05" />
<EVAL exec="ST1 = ST" />
<EVAL exec="X = ZX.multiply(BigDecimal.valueOf(0.75))" />
<EXECUTE method="UPTAB05" />
<EVAL exec="ST2 = ST" />
<EVAL exec="DIFF = (ST1.subtract(ST2)).multiply(ZAHL2)" />
<EVAL exec="MIST = (ZX.multiply(BigDecimal.valueOf(0.15))).setScale(0, BigDecimal.ROUND_DOWN)" />
<IF expr="MIST.compareTo(DIFF) == 1">
<THEN>
<EVAL exec="ST = MIST" />
</THEN>
<ELSE>
<EVAL exec="ST = DIFF" />
</ELSE>
</IF>
</METHOD>
<!-- Solidaritaetszuschlag
PAP Seite 19 -->
<METHOD name="MSOLZ">
<EVAL exec="SOLZFREI = BigDecimal.valueOf(972 * KZTAB)" />
<IF expr="JBMG.compareTo(SOLZFREI) == 1">
<THEN>
<EVAL exec="SOLZJ = (JBMG.multiply(BigDecimal.valueOf(5.5/100))).setScale(2, BigDecimal.ROUND_DOWN)" />
<EVAL exec="SOLZMIN = (JBMG.subtract(SOLZFREI)).multiply(BigDecimal.valueOf(20.0/100.0))" />
<IF expr="SOLZMIN.compareTo(SOLZJ) == -1">
<THEN>
<EVAL exec="SOLZJ = SOLZMIN" />
</THEN>
<ELSE>
</ELSE>
</IF>
<EVAL exec="JW = SOLZJ.multiply(ZAHL100).setScale(0, BigDecimal.ROUND_DOWN)" />
<EXECUTE method="UPANTEIL" />
<EVAL exec="SOLZLZZ = ANTEIL1" />
</THEN>
<ELSE>
<EVAL exec="SOLZLZZ = ZAHL0" />
</ELSE>
</IF>
<IF expr="R > 0">
<THEN>
<EVAL exec="JW = JBMG.multiply(ZAHL100)" />
<EXECUTE method="UPANTEIL" />
<EVAL exec="BK = ANTEIL1" />
</THEN>
<ELSE>
<EVAL exec="BK = ZAHL0" />
</ELSE>
</IF>
</METHOD>
<!-- Anteil von Jahresbetraegen fuer einen LZZ (§ 39b Abs. 2 Satz 10 EStG)
PAP Seite 20 -->
<METHOD name="UPANTEIL">
<IF expr="LZZ == 1">
<THEN>
<EVAL exec="ANTEIL1 = JW" />
<EVAL exec="ANTEIL2 = JW" />
</THEN>
<ELSE>
<IF expr="LZZ == 2">
<THEN>
<EVAL exec="ANTEIL1 = JW.divide(ZAHL12, 0, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ANTEIL2 = JW.divide(ZAHL12, 0, BigDecimal.ROUND_UP)" />
</THEN>
<ELSE>
<IF expr="LZZ == 3">
<THEN>
<EVAL exec="ANTEIL1 = (JW.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ANTEIL2 = (JW.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_UP)" />
</THEN>
<ELSE>
<EVAL exec="ANTEIL1 = JW.divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)" />
<EVAL exec="ANTEIL2 = JW.divide(ZAHL360, 0, BigDecimal.ROUND_UP)" />
</ELSE>
</IF>
</ELSE>
</IF>
</ELSE>
</IF>
</METHOD>
<!-- Berechnung sonstiger Bezuege nach § 39b Abs. 3 Saetze 1 bis 7 EStG)
PAP Seite 21 -->
<METHOD name="MSONST">
<IF expr="SONSTB.compareTo(ZAHL0) == 1">
<THEN>
<EVAL exec="LZZ = 1" />
<EVAL exec="VBEZ = JVBEZ" />
<EVAL exec="RE4 = JRE4" />
<EXECUTE method="MRE4LZZ" />
<EXECUTE method="MRE4LZZ2" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST1 = ST.multiply(ZAHL100)" />
<EVAL exec="VBEZ = JVBEZ.add(VBS)" />
<EVAL exec="RE4 = JRE4.add(SONSTB)" />
<EVAL exec="VBEZS = VBEZS.add(STERBE)" />
<EXECUTE method="MRE4LZZ" />
<EXECUTE method="MRE4LZZ2" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST2 = ST.multiply(ZAHL100)" />
<EVAL exec="STS = LST2.subtract(LST1)" />
<EVAL exec="SOLZS = STS.multiply(BigDecimal.valueOf(5.5)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)" />
<IF expr="R > 0">
<THEN>
<EVAL exec="BKS = STS" />
</THEN>
<ELSE>
<EVAL exec="BKS = ZAHL0" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EVAL exec="STS = ZAHL0" />
<EVAL exec="SOLZS = ZAHL0" />
<EVAL exec="BKS = ZAHL0" />
</ELSE>
</IF>
</METHOD>
<!-- Berechnung sonstiger Bezuege nach § 39b Abs. 3 Saetze 1 bis 7 EStG)
PAP Seite 21 -->
<METHOD name="MRE4LZZ2">
<EVAL exec="RE4LZZ = RE4.subtract(FVB).subtract(ALTE).subtract(JFREIB).add(JHINZU)" />
<EVAL exec="RE4LZZV = RE4.subtract(FVB).subtract(ALTE)" />
<EXECUTE method="MRE4" />
<EXECUTE method="MZTABFB" />
</METHOD>
<!-- Berechnung der Verguetung fuer mehrjaehrige Taetigkeit nach § 39b Abs. 3 Satz 9 EStG)
PAP Seite 22 -->
<METHOD name="MVMT">
<IF expr="(VMT.add(VKAPA)).compareTo(ZAHL0) == 1">
<THEN>
<EVAL exec="LZZ = 1" />
<EVAL exec="VBEZ = JVBEZ.add(VBS)" />
<EVAL exec="RE4 = JRE4.add(SONSTB)" />
<EXECUTE method="MRE4LZZ" />
<EXECUTE method="MRE4LZZ2" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST1 = ST.multiply(ZAHL100)" />
<EVAL exec="VMT = VMT.add(VKAPA)" />
<EVAL exec="VBEZS = VBEZS.add(VKAPA)" />
<EVAL exec="VBEZ = VBEZ.add(VKAPA)" />
<EVAL exec="RE4 = JRE4.add(SONSTB).add(VMT)" />
<EXECUTE method="MRE4LZZ" />
<EXECUTE method="MRE4LZZ2" />
<EVAL exec="KENNZ = 1" />
<EVAL exec="ZRE4VP1 = ZRE4VP" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST3 = ST.multiply(ZAHL100)" />
<EVAL exec="VBEZ = VBEZ.subtract(VKAPA)" />
<EVAL exec="RE4 = JRE4.add(SONSTB)" />
<EXECUTE method="MRE4LZZ" />
<IF expr="(RE4.subtract(JFREIB).add(JHINZU)).compareTo(ZAHL0) == -1">
<THEN>
<EVAL exec="RE4 = RE4.subtract(JFREIB).add(JHINZU)" />
<EVAL exec="JFREIB = ZAHL0" />
<EVAL exec="JHINZU = ZAHL0" />
<EVAL exec="RE4 = (RE4.add(VMT)).divide(ZAHL5, 0, BigDecimal.ROUND_DOWN)" />
<EXECUTE method="MRE4LZZ2" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST2 = ST.multiply(ZAHL100)" />
<EVAL exec="STV = LST2.multiply(ZAHL5)" />
</THEN>
<ELSE>
<EVAL exec="RE4 = RE4.add(VMT.divide(ZAHL5, 0, BigDecimal.ROUND_DOWN))" />
<EXECUTE method="MRE4LZZ2" />
<EXECUTE method="MLSTJAHR" />
<EVAL exec="LST2 = ST.multiply(ZAHL100)" />
<EVAL exec="STV = (LST2.subtract(LST1)).multiply(ZAHL5)" />
</ELSE>
</IF>
<EVAL exec="LST3 = LST3.subtract(LST1)" />
<IF expr="LST3.compareTo(STV) == -1">
<THEN>
<EVAL exec="STV = LST3" />
</THEN>
<ELSE>
</ELSE>
</IF>
<EVAL exec="SOLZV = (STV.multiply(BigDecimal.valueOf(5.5))).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)" />
<IF expr="R > 0">
<THEN>
<EVAL exec="BKV = STV" />
</THEN>
<ELSE>
<EVAL exec="BKV = ZAHL0" />
</ELSE>
</IF>
</THEN>
<ELSE>
<EVAL exec="STV = ZAHL0" />
<EVAL exec="SOLZV = ZAHL0" />
<EVAL exec="BKV = ZAHL0" />
</ELSE>
</IF>
</METHOD>
<!-- Berechnung der Verguetung fuer mehrjaehrige Taetigkeit nach § 39b Abs. 3 Satz 9 EStG)
PAP Seite 23 -->
<METHOD name="UPTAB05">
<IF expr="X.compareTo(BigDecimal.valueOf(7665)) == -1">
<THEN>
<EVAL exec="ST = ZAHL0" />
</THEN>
<ELSE>
<IF expr="X.compareTo(BigDecimal.valueOf(12740)) == -1">
<THEN>
<EVAL exec="Y = (X.subtract(BigDecimal.valueOf(7664))).divide(BigDecimal.valueOf(10000), 6, BigDecimal.ROUND_DOWN)" />
<EVAL exec="RW = Y.multiply(BigDecimal.valueOf(883.74))" />
<EVAL exec="RW = RW.add(BigDecimal.valueOf(1500))" />
<EVAL exec="ST = (RW.multiply(Y)).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<IF expr="X.compareTo(BigDecimal.valueOf(52152)) == -1">
<THEN>
<EVAL exec="Y = (X.subtract(BigDecimal.valueOf(12739))).divide(BigDecimal.valueOf(10000), 6, BigDecimal.ROUND_DOWN)" />
<EVAL exec="RW = Y.multiply(BigDecimal.valueOf(228.74))" />
<EVAL exec="RW = RW.add(BigDecimal.valueOf(2397))" />
<EVAL exec="RW = RW.multiply(Y)" />
<EVAL exec="ST = (RW.add(BigDecimal.valueOf(989))).setScale(0, BigDecimal.ROUND_DOWN)" />
</THEN>
<ELSE>
<EVAL exec="ST = ((X.multiply(BigDecimal.valueOf(0.42))).subtract(BigDecimal.valueOf(7914))).setScale(0, BigDecimal.ROUND_DOWN)" />
</ELSE>
</IF>
</ELSE>
</IF>
</ELSE>
</IF>
<EVAL exec="ST = ST.multiply(BigDecimal.valueOf(KZTAB))" />
</METHOD>
</METHODS>
</PAP>