home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 12
/
CD_ASCQ_12_0294.iso
/
news
/
440
/
basxrf13
/
amortgw.bas
next >
Wrap
BASIC Source File
|
1994-01-04
|
5KB
|
141 lines
100 'AMORTGW.BAS Copyright 1993 by JN Goodale
110 'Date: [93-12-20]
111 '
112 ' *** NOTE ***
113 ' This program is included for the purpose of demonstrating BASICXR.
114 ' The program works correctly, but may contain errors if run with
115 ' unusual input. The author assumes no responsibility for making
116 ' corrections to AMORTGW.BAS!
117 '
120 'Desc: Amortization of a Loan - Find Amount of Level Payment
140 '
150 ' P=Principal
160 ' R=Interest Rate
170 ' I=Interest/Period
180 ' N=Number of Payments (Periods)
190 ' A=Amount of Level Payment
200 '
210 '
220 '
230 ' P * I
240 ' A = --------------
250 ' 1
260 ' 1 - --------
270 ' (1+I) ^N Where ^N is "to the Nth Power"
280 '
290 '.......................................................................
300 '
310 '
320 DIM TEXT$(24)
330 ' 0 1 2 3 4 5
340 ' 123456789 123456789 123456789 123456789 123456789 123456789
350 TEXT$(1) = " [ LOAN AMORTIZATION ]"
360 TEXT$(2) = " "
370 TEXT$(3) = " Calculate a Level Loan Payment, given:"
380 TEXT$(4) = " Loan Principal, nearest full $ (Max 500000)"
390 TEXT$(5) = " Interest Rate per Year (Max 30.00), Full %, as in 7.75 = 7.75%"
400 TEXT$(6) = " Number of months to Pay (Max 480)"
410 TEXT$(7) = " I.E. 30 Years = 360 Months"
420 TEXT$(8) = " 4 Years = 48 Months"
430 TEXT$(9) = STRING$(79, 220)
440 TEXT$(10) = " Enter Amount of PRINCIPAL: (Q-to Quit)"
450 TEXT$(11) = " Enter Interest Rate %: "
460 TEXT$(12) = " Enter Number of Months: "
470 TEXT$(13) = " "
480 TEXT$(14) = " The MONTHLY Payment on the above loan would be: $"
490 TEXT$(15) = " "
500 TEXT$(16) = " V-To View loan schedule"
510 TEXT$(17) = " Q-To Quit"
520 TEXT$(18) = " "
530 TEXT$(19) = " "
540 TEXT$(20) = " Choice ? _"
550 TEXT$(21) = " "
560 TEXT$(22) = " "
570 TEXT$(23) = " "
580 TEXT$(24) = " "
590 ' 123456789 123456789 123456789 123456789 123456789 123456789
600 ' 0 1 2 3 4 5
610 '
620 DIM HEADING$(3)
630 HEADING$(1) = " [ Loan Amortization Table ]"
640 HEADING$(2) = " Payment # Balance Interest Principal"
650 HEADING$(3) = " "
660 '
670 E0$ = "#######": E2$ = "#######.##": EI$ = "####"
720 KEY OFF
750 CLS
760 FOR I = 1 TO 10: PRINT TEXT$(I): NEXT I
770 LOCATE 10, 34: LINE INPUT PRINCIPAL$
780 IF (PRINCIPAL$ = "Q") OR (PRINCIPAL$ = "q") THEN GOTO 1270
790 N = INSTR(PRINCIPAL$, ".")
800 IF N THEN PRINCIPAL$ = LEFT$(PRINCIPAL$, N - 1)
810 PRINCIPAL = VAL(PRINCIPAL$)
820 IF PRINCIPAL < 1 THEN GOTO 750
830 IF PRINCIPAL > 500000! THEN GOTO 750
840 LOCATE 11, 1: PRINT TEXT$(11)
850 '
870 LOCATE 11, 35: LINE INPUT INTERESTRATE$
880 INTERESTRATE = VAL(INTERESTRATE$) / 1200
890 IF (INTERESTRATE > 0) AND (INTERESTRATE < 30 / 1200) THEN GOTO 940
900 LOCATE 11, 35
910 PRINT SPACE$(10);
920 GOTO 870
940 LOCATE 12, 1: PRINT TEXT$(12)
950 '
970 LOCATE 12, 35: LINE INPUT MONTHS$
980 MONTHS% = VAL(MONTHS$) \ 1
990 MONTHS = MONTHS%
1000 IF (MONTHS% > 0) AND (MONTHS% < 481) THEN GOTO 1070
1010 LOCATE 12, 35
1020 PRINT SPACE$(10);
1030 GOTO 970
1050 '
1070 X = (1 + INTERESTRATE) ^ MONTHS%
1080 Y = 1 / X
1090 Z = 1 - Y
1100 AMOUNT = (PRINCIPAL * INTERESTRATE) / Z
1110 '
1130 LOCATE 14, 1
1140 FOR I = 14 TO 20: PRINT TEXT$(I): NEXT I
1150 LOCATE 14, 57: PRINT USING E2$; (AMOUNT);
1160 LOCATE 20, 37
1170 '
1190 K$ = INKEY$
1200 IF K$ = "" THEN GOTO 1190
1210 IF K$ = "q" THEN GOTO 1270
1220 IF K$ = "Q" THEN GOTO 1270
1230 IF K$ = "V" THEN GOSUB 1310
1235 IF K$ = "v" THEN GOSUB 1310
1240 GOTO 750
1250 '
1270 CLS
1280 END
1290 '
1310 GOSUB 1560: BALANCE = PRINCIPAL
1320 FOR I% = 1 TO MONTHS%
1330 INTERESTPAY = BALANCE * INTERESTRATE
1340 PRINCIPALPAY = AMOUNT - INTERESTPAY
1350 BALANCE = BALANCE - PRINCIPALPAY
1360 ROW = ROW + 1
1370 IF ROW > 22 THEN GOSUB 1490
1380 IF K$ = "Q" THEN RETURN
1390 PRINT " ";
1400 PRINT USING EI$; (I%); : PRINT " ";
1410 PRINT USING E0$; BALANCE; : PRINT " ";
1420 PRINT USING E2$; INTERESTPAY; : PRINT " ";
1430 PRINT USING E2$; PRINCIPALPAY
1440 NEXT I%
1450 GOSUB 1490
1460 RETURN
1470 '
1490 PRINT
1500 PRINT TAB(20); "Q-To Quit, Any Other Key to Continue ......";
1520 K$ = INKEY$
1530 IF K$ = "" THEN GOTO 1520
1540 IF K$ = "q" THEN K$ = "Q"
1560 CLS
1570 IF K$ = "Q" THEN RETURN
1580 FOR ROW = 1 TO 3: PRINT HEADING$(ROW): NEXT ROW
1590 RETURN