! A program to calculate payments on a loan by duration and interest rates.
! begun 5/13/83 by ron
! This program outputs the results of the fancy version to a file called
! AMORTZ.DAT. If you run the program again, it writes the new listing over
! the old one. 

! If you want to append several runs, replace OUTPUT with APPEND 
! where the file AMORTZ.DAT is opened.

map1 loan,f 	! loan amount in dollars
map1 rate,f	! interest rate
map1 lenght,f	! length of loan in years
map1 a,f
map1 dummy,s,1
map1 choice,f
	
menu:
	? tab(-1,0)
	? tab(5,5)
	? "Here are the choices for running this program"
	?
	? "1.  Run just the quickest version..............."
	? 
	? "2.  Run the fancy one with monthly listings....."
	?
	? "3.  Exit this program stage left................"
	?
	input "Enter the number of your choosing................>",choice

	on choice call the'top, fancy, quit



the'top:
	? tab(-1,0)	
	? tab(8,10)
	input "Enter loan amount in dollars.......$",loan
	?
	input "Enter annual interest rate .........",rate
	?
	input "Enter loan duration in years........",length

calculate:
	let i=rate/12/100
	let m=length*12
	let l=loan
	let a=(i*l)/((1-(i+1)^(-m)))
	goto answer
fancy:
	? tab(-1,0)	
	? tab(8,10)
	
        open #1, "AMORTZ.DAT", output	
	input "Enter loan amount in dollars......$",loan
	?#1, "Enter loan amount in dollars......$",loan
	?
	input "Enter annual interest rate.........",rate
	?#1, "Enter annual interest rate.........",rate
	?
	input "Enter loan duration in years.......",length
	?#1, "Enter loan duration in years.......",length
	let i=rate/12/100
	let m=length*12
	let l=loan
	let a=(i*l)/((1-(i+1)^(-m)))
	let x=a
	let x=(int(100*(x+.005)))/100
	let a=x
        ?#1
        ?#1
        ?#1
	?
	?
	? "The monthly payment is ---------- $",a
	?#1, "The monthly payment is ---------- $",a
	?
	?
        ?#1
        ?#1
	input"For the month by month listing hit RETURN",q
	let b=l				!initialize for Amortization
	let t=0
	? "MONTH#","INTEREST","PRINCIPLE","PRINC.BAL","TOTAL INT."
	?#1, "MONTH#","INTEREST","PRINCIPLE","PRINC.BAL","TOTAL INT."
	for j=1 to m			!loop for number of payments
	let i1=b*i			!compute the interest
	let x=i1
	let x=(int(100*(x+.005)))/100
	let i1=x
	let p=a-i1 	                !compute the PRINCIPLE
	if j=m then let p=b		!force out the last payment
	let b=b-p			!update the loan balance
	let t=t+i1			!update the total interest
	? j,i1,p,b,t			!print monthly pay details
        ?#1, j,i1,p,b,t
	next j
	?
        close #1


!       input "Shall we out put this to a file (Y/N) --->",b$
!	if b$="y" then call format

	input "Shall we do it again (Y/N)----->",a$
	if ucs(a$)="Y"&
	     then call menu &
		else goto quit


answer:
	?tab(15,10)
	?"The monthly payment on that loan would be       $",a
	call pause
	call menu

pause:
	? tab(20,25)
	input "hit return to continue.....>",y
	call menu
	return


quit:
	end