%% Kreditrechung ist keine Hexerei
%
%  Beachten: Schuldsumme =  Kredit + Nebengebuehren      
%                           ==> Nebengebuehren separat bezahlen!
%            monatliche/quartalsweise Gebuehren? (hier: monatlich gerechnet)
%            Sondertilgungen zum Ende der Zinsperiode vereinbaren!
%            variabler Zinssatz?
%
% Die hier vorgestellte Rechnung ist sehr einfach gehalten 
% und nicht ganz exakt, da die letzte Rate geringer sein müßte.
% 

clear; clc; close all;
%% Daten setzen
Schulden = 120000;        % = Kredit + Nebengebuehren in EUR
ZinsSatz = 6.125/100;     % jaehrlicher Zinssatz in Prozent

KontoFuehrung = 13.71;    % Kontofuerung in EUR pro Monat

Rate = 1200;              % monatlich Rate in EUR      !!

%% Ist meine monatliche Rate hoch genug, damit sich die Schuldsumme nicht vergroessert?
minRate = Schulden*ZinsSatz/12 + KontoFuehrung;
while Rate<minRate
    Rate = input("Geben Sie eine Tilgung groesser als die monatliche Mindestilgung von "...
                 +minRate+" EUR ein: ");
end

%% Wie lange muss ich zahlen?
% Brute Force 
Restschuld = Schulden;
t = 0;
while Restschuld>0
    Zinsdienst = Restschuld * ZinsSatz / 12;  % Berechnung des Zinsdienstes
    Tilgung    = Rate-Zinsdienst;             % Reduktion der Kreditsumme
    % Rate == Zinsdienst+Tilgung
    Restschuld = Restschuld*(1+ZinsSatz/12) - Rate + KontoFuehrung;
    t = t+1;
    R(t) = Restschuld;
    Z(t) = Zinsdienst;
    T(t) = Tilgung;
end

disp("Kredit nach "+t+" Monaten getilgt.    ("+ -R(end)+" EUR zu viel bezahlt")

%% Eine Auswertung
GesamtZahlungen = t*Rate;
disp("Zur Schuldentilgung von "+Schulden+" EUR wurden insgesamt "+...
     GesamtZahlungen+" EUR aufgewendet.")
disp("Monatsrate: "+Rate+" EUR    "+"Zinssatz "+100*ZinsSatz+" %")

%% und etwas Grafik
plot(0:length(R),[Schulden R]);
title(['Kredit nach ',num2str(t),' Monaten getilgt'])
xlabel('Monat')
ylabel('EUR')

%%
figure
bar([T.',Z.'])
% bar([T.',Z.'],"stacked")  % probieren
legend(["Tilgung","Zinsdienst"])
title("fixe Monatsrate: "+Rate+" EUR")




