#Loan Payment with compound interest

#p:principle, r:rate/year(in %), y:amortagation (in year)

#The calculation is for compounded interest (added to principle) 2 times every year

print "Enter amount of principle ";:input p

print "Enter annual interest rate (in %) ";:input r

print "Enter amortization (in year) ";:input y

#Convert rate to monthly rate including the compound processing

x=r/200

n=1/6

#r+1=(1+r/200)**(1/6)

gosub power

r=powerx-1

#Convert year to months

y=y*12

x=r

n=y

gosub power

#Accumulation function s=(1+r)**y

s=powerx

#Monthly payment m = p*s*r/(s-1) ~ p*s/y

m=p*s*r/(s-1)

#Total interest

i=m*y-p

print "Monthly Payment = ";:print m

print "Total Interst = ";:print i

goto Done

 

power:

#For (1+x)**n, ok for n=+integer, or else if x**2<1

#(1+x)**n = 1 + nx + n(n-1)x**2/2! + ...

np=n

nq=0

nf=1

powerx=1+np*x/nf

delta=0.000001

SubLoop:

power0=powerx

x=x*x

nq=nq+1

np=np*(n-nq)

nf=nf*(nq+1)

powerx=powerx+np*x/nf

if abs(powerx-power0)<delta then goto Ende

refresh

goto SubLoop

Ende:

Return

 

Done: