let darlehensbetrag = 150000M
let inline ( ** ) (x:decimal) (y:int) = pown x y
let inline komischeformel (D4: decimal) (D3: int) = ((D4/12M)*(1M+(D4/12M))**D3)/(((1M+(D4/12M))**D3)-1M)
let formelresultat = komischeformel (decimal zinssatz) laufzeit
let gesamtrate = darlehensbetrag * formelresultat
type Zeile = { Monat: int; Rest: decimal; Zinsen: decimal; Kapital: decimal; Restkapital: decimal }
|> List.fold (fun (ls, rest) m ->
let zinsen = rest * (decimal zinssatz / 12M)
let kapital = gesamtrate - zinsen
let restkapital = rest - kapital
let z = { Monat = m; Rest = rest; Zinsen = zinsen; Kapital = kapital; Restkapital = restkapital }
z::ls, restkapital) ([], darlehensbetrag)
|> List.iter (fun z -> printfn "%4i | %10.2f | %10.2f | %10.2f | %10.2f | %10.2f"
z.Monat z.Rest z.Zinsen z.Kapital gesamtrate z.Restkapital)