
DeleteBegin:
' ********************************************
' *                 PAR Real                 *
' *   Copyright (C) 1986, PAR Software, Inc. *
' *            All Rights Reserved           *
' ********************************************

REM AFFORDABLE LOAN DETERMINATION MODULE    (AL.v1)
1000                  ' execution starts here when chained in

ON MENU GOSUB CheckMenu
MENU ON
ON ERROR GOTO ErrorFix
BREAK ON
ON BREAK GOSUB ReturnUser


   DATA 4,30,14,8, "Misc. Finance Charges    ",3,1
   DATA 5,30,14,2, "Month of First Payment   ",4,3
   DATA 6,30,14,8, "Monthly Payment Desired  ",3,1
   DATA 7,30,14,5, "Yearly Interest Rate (%) ",2,3
   DATA 8,30,14,5, "Number of Years of Loan  ",1,1

Initialize:
Count = 0
Saved#(1)=0:Saved#(2)=0:Saved#(3)=0:Saved#(4)=0:Saved#(5)=0
Saved$(1)="":Saved$(2)="":Saved$(3)="":Saved$(4)="":Saved$(5)=""

eiFlag = 0
paFlag = 0
GOSUB ResetAlterVars

MaxComps = 12
Cur$ = " "
Speech2$="Please try again"
Speech1$="The result is to large to output"
phrase$=Speech1$
FOR lcv = 1 TO 5
READ Lin(lcv),Strt(lcv),FieldLength(lcv),MaxLength(lcv),Prompt$(lcv),UseIndex(lcv),BGColor(lcv)
NEXT lcv

COLOR ,0
CLS
PALETTE 1,.25,.35,.55
PALETTE 2,.25,.35,.55
PALETTE 3,.25,.35,.55

FOR lcv = 1 TO 5
COLOR 1,0
LOCATE Lin(lcv),Strt(lcv)-LEN(Prompt$(lcv)): PRINT Prompt$(lcv);
COLOR 2,BGColor(lcv)
PRINT SPACE$(FieldLength(lcv))
NEXT lcv
CursorColor = 2

COLOR 2,3
LOCATE 2,23:PRINT " AFFORDABLE LOAN DETERMINATION "
LINE (176,7)-(423,7),3
LOCATE 5,51:PRINT  " TOTAL AMOUNT PAID "
LINE (400,31)-(551,31),3

LOCATE 10,1
PRINT "  MONTH         LOAN     INTEREST    #         MONTHLY         TOTAL     "
PRINT " OF FIRST      AMOUNT      RATE     YRS        PAYMENT     INTEREST PAID "
LINE (0,71)-(583,71),3
heady1%=11

PALETTE 0,.25,.35,.55
PALETTE 1,.85,.792,.734
PALETTE 2,0,0,0
PALETTE 3,.7,.7,.75

Index = 1 : LastLine = 5

GOSUB TurnMenuOn
GOSUB InitMenuOff
GOTO InCheck

SetValues:
Count = Count + 1
FinCharg#(Count) = Saved#(1)
Month(Count) = Saved#(2)
Payment#(Count) = Saved#(3)
IntRate(Count) = Saved#(4)
LoanYears(Count) = Saved#(5)
RETURN

Calculate:
COLOR 2,3:LOCATE 2,23
PRINT " AFFORDABLE LOAN DETERMINATION "
TooLarge = 0
IF IntRate(Count) >= 100 THEN
phrase$="The intrist rate must be less than one hundrid"
GOSUB InputError
RETURN
END IF
IF Month(Count) > 12 THEN
phrase$="The month must be twelve or less"
GOSUB InputError
RETURN
END IF
IF LoanYears(Count) >= 100 THEN
phrase$="The number of years on the loan must be less than one hundrid"
GOSUB InputError
RETURN
END IF
Rate = IntRate(Count) / 1200
TotalPeriods = LoanYears(Count) * 12
Principal#(Count) = Payment#(Count) / (( Rate / (( Rate + 1 ) ^ TotalPeriods - 1 ) + Rate ))
TotalIntPaid#(Count) = Payment#(Count) * TotalPeriods - Principal#(Count)
if Principal#(Count) >= 10000000000 or TotalIntPaid#(Count) >= 100000000000 then
phrase$=Speech1$
GOSUB InputError
END IF
Err6Exit:
RETURN

FindEffInt:
EffectIntr(Count) = TotalIntPaid#(Count) + FinCharg#(Count) + Principal#(Count)   
RETURN

OutputEffInt:
COLOR 1,0
LOCATE 6,52
PRINT USING ten$;EffectIntr(Count);
RETURN

OutputAnalysis:
heady1%=heady1%+1
LOCATE heady1%,1
PRINT USING "    ## "; Month(Count);
PRINT USING ten$;Principal#(Count);
PRINT USING "  ###.##%   ##.##";IntRate(Count);LoanYears(Count);
PRINT USING eight$;Payment#(Count);
PRINT USING ten$; TotalIntPaid#(Count);
RETURN

PrinterOutput:
PRINT #3, "":PRINT #3, "":PRINT #3, "                             AFFORDABLE LOAN DETERMINATION"
PRINT #3, "":PRINT #3, ""
PRINT #3, "MONTH     LOAN    INTEREST    #         MONTHLY        TOTAL          FINANCE       TOTAL"
PRINT #3, "OF 1ST   AMOUNT     RATE     YRS        PAYMENT    INTEREST PAID      CHARGES     AMT PAID"
PRINT #3,"-------------------------------------------------------------------------------------------"
PRINT #3, ""
FOR i = 1 TO Count
PRINT #3, USING " ##"; Month(i);
PRINT #3, USING eight$;Principal#(i);
PRINT #3, USING " ###.##%   ##.##";IntRate(i);LoanYears(i);
PRINT #3, USING eight$;Payment#(i);
PRINT #3, USING ten$; TotalIntPaid#(i);
PRINT #3, USING eight$;FinCharg#(i);
PRINT #3, USING eight$;EffectIntr(i)
NEXT i
GOTO 200

DeleteEnd:

