0

Berechnung des Annuitätendarlehens erfolgt nicht komplett über die Laufzeit, warum?

Hallo zusammen,

 

ich habe ein Annuitätendarlehen, welches über 60 Monate laufen soll.

 

Auszahlung: 07.09.2022

Erste Tilgung: 07.10.2022

Laufzeit 60 Monate somit endet die Zinsbindung am 7.10.2027

 

do as server
    let my := this;
    let myDate := date(year(Tilgungsbeginn), month(Tilgungsbeginn), day(Tilgungsbeginn));
    while myDate < 'Ende der Zinsbindung' do 
        let myNew := (create Kapitaldienst);
        myNew.(
            Datum := myDate;
            Darlehen := my;
            'Kapitaldienst dieser Monat' := my.'Monatliche Rate';
            RestschuldVorperiode := my.Nettodarlehensbetrag - sum(my.Kapitaldienst[Datum < myDate].'Tilgung dieser Monat') - sum(my.Kapitaldienst[Datum < myDate].Sondertilgung)
        );
        myDate := date(year(myDate), month(myDate) + 1, day(myDate))
    end

end

 

Das Ergebnis ist ein Zins- und Tilgungsplan, der monatlich ausweist, welche Zinsen wurden bezahlt, wie hoch war die Tilgung und welche Restschuld pro Monat verbleibt.

 

Am 7.7.2025 hört der Zins und Tilgungsplan dann auf. Hier fehlen gut zwei Jahre in der Aufstellung, hat jemand eine Idee?

 

Gruß

 

Michael

4 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Michael Warum es mit dem while-Konstrukt nicht funktioniert, kann ich auf den ersten Blick nicht sagen, zumal auch die Information fehlt welche 2 Jahre fehlen, also wo die Schleife den Fehler macht.
    Ich habe dein Konstrukt mal mit einer Untertabelle nachgebaut (abgesehen von den Zahlungswerten) und es werden mir für den vorgegebenen Zeitraum 60 Records gebildet mit fortlaufendem Monatsdatum.
    Um das Problem einzukreisen, nimm mal aus dem Script die Berechnung von 'Kapitaldienst dieser Monat' raus. Wenn dann die Anzahl der Einträge stimmt, muss es an diesem Teil liegen .

    Alternativ könnte man testen, wenn eine monatliche Tilgung erfolgen soll und die Anzahl der Monate bekannt ist, die Schleife statt mit 'while', mit 'for i in range(0,'ANZAHL Monate') do' laufen zu lassen und zu sehen, ob die Berechnung vollständig erfolgt.

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Ich habe mir die Berechnung von 'RestschuldVorperiode' nochmal genauer angesehen.

      Mir erschließt sich nicht
       'sum(my.Kapitaldienst[Datum < myDate].Sondertilgung)
       Es ergibt für mich in diesem Fall nur einen Sinn, wenn es der erste manuell eingefügte Record der Tabelle 'Kapitaldienst' ist und in dem Feld 'Sondertilgung' ein Wert steht.
      Mit durchlaufen der Schleife werden in diesem Beispiel hintereinander weg 60 Records gebildet und in keinem Durchlauf wird das Feld 'Sondertilgung' im jeweiligen Record angefasst, so dass die Summe von 'Sondertilgung' immer Gleich ist.

    • Michael.3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo UweG,

     

    zur Vervollständigung meiner Angaben: es sind immer die letzten Monate die fehlen; konkret: die letzte berechnete Zeile des Tilgungsplans ist der 7.7.2025, laufen müsste er allerdings bis zum 7.9.2027. es fehlen also 26 Monatsberechnungen.

     

    ich verwende die Mac-Version von Ninox.

     

    Deine Vorschläge werde ich gleich mal ausprobieren.

    ja, mit der Sondertilgung hast Du recht, wenn zum Beispiel bei einer Kfz Finanzierung eine Anzahlung geleistet wurde.

     

    vielen Dank, werde es jetzt mal ausprobieren

     

    Micharl

    • Michael.3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    UweG ,

     

    vielen Dank, die Alternative mit for i in range(0, Laufzeit) hat mir sehr weiter geholfen. Ich habe aus Datum(Tilgungsbeginn) und Datum(Ende der Zinsbindung) die Anzahl der Monate berechnen lassen und diese dann als number(Laufzeit) in den range-Ausdruck integriert und es klappt.

     

    Da ich selbst nicht so der Programmierer bin, nutze ich gerne und dankbar die Codes, die hier im Forum geteilt werden. 

    Das Script mit der while-Schleife stammt aus dem Post 'Darlehen mit Sondertilgung berechnen'

     

    Nochmals, vielen Dank

     

    Michael