%% Kreditrechung ist keine Hexerei
%
%  Beachten: Schuldsumme =  Kredit + Nebengebuehren      
%                           ==> Nebengebuehren separat bezahlen!
%            monatliche/quartalsweise Gebuehren?
%            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

MonateInPeriode = 3;      % vierteljaehrliche Zinsperiode
% MonateInPeriode = 1;      % monatliche Zinsperiode
KontoFuehrung = 13.71;    % Kontofuerung in EUR pro Zinsperiode

monatTilgung = 1200;       % monatlich Tilgung in EUR      !!
Tilgung = MonateInPeriode*monatTilgung;   % Tilgung pro Zinsperiode in EUR

%% Ist meine monatliche Tilgung hoch genug, damit sich die Schuldsumme nicht vergroessert?
minTilgung = Schulden*ZinsSatz/12 + KontoFuehrung/MonateInPeriode;
while monatTilgung<minTilgung
    monatTilgung = input(['Geben Sie eine Tilgung groesser als die monatliche Mindestilgung von ',num2str(minTilgung),' EUR ein: ']);
end
Tilgung = MonateInPeriode*monatTilgung;   % Tilgung pro Zinsperiode in EUR


%% Wie lange muss ich zahlen?
% Brute Force 

Restschuld = Schulden;
t = 0;
while Restschuld>0
    Restschuld = Restschuld*(1+ZinsSatz*MonateInPeriode/12) - Tilgung + KontoFuehrung/MonateInPeriode;
    t = t+1;
    R(t) = Restschuld;
end

disp(['Kredit nach ',num2str(t*MonateInPeriode),' Monaten getilgt.    (',...
      num2str(-R(end)),' EUR zu viel bezahlt)'])

%% Eine Auswertung
GesamtZahlungen = t*Tilgung;
disp(['Zur Schuldentilgung von ', num2str(Schulden),' EUR wurden insgesamt ',num2str(GesamtZahlungen),' EUR aufgewendet.'])
disp(['Monatsrate: ',num2str(monatTilgung), ' EUR    ', 'Zinssatz ',num2str(100*ZinsSatz), ' %'  ])

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



