Listing of file='MORGAG.BAS;01' on disk='vmedia/personal_finance_vol_1-sector.ccvf'
100 TM= 256* PEEK (32941)+ PEEK (32940) 110 Z= TM+ 8:AD= 33283:GOSUB 160:TM= TM+ 1 120 X= 0:Y= 9:H= 20:W= 64:C= 1 130 Z= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 160 140 Z= 128- W- W:AD= TM+ 149:GOSUB 160:POKE TM+ 129,H- 1 150 POKE TM+ 131,W* (C+ 1):POKE TM+ 143,35* (1- C):GOTO 170 160 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN 170 PLOT 12,14,22 180 DEF FN C(I)= INT (I* 100- INT (I)* 100+ .5)/ 100 190 DEF FN I(I)= 16- LEN (STR$ (INT (I)))- 3* Z1 200 DEF FN J(I)= 29- LEN (STR$ (INT (I)))+ Z1 210 DEF FN K(I)= 46- LEN (STR$ (INT (I)))+ 2* Z1 220 DIM DATE$(12) 230 DATA "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC" 240 FOR I= 1TO 12:READ DATE$(I):NEXT 250 PLOT 13,3,20,0:PRINT "* LOAN ANALYSIS *" 260 PRINT 270 L= 0:SC= 8 280 PRINT "ENTER NUMBER OF DESIRED VALUE:" 290 PRINT "1 - RATE" 300 PRINT "2 - LIFE" 310 PRINT "3 - AMOUNT BORROWED" 320 PRINT "4 - MONTHLY PAYMENT" 330 PLOT 3,0,8,11:PRINT "YOUR CHOICE:"; 340 INPUT "";Z$:Z= VAL (Z$) 350 PRINT :IF Z< 1OR Z> 4THEN 330 360 IF Z= 1THEN 400 370 INPUT "NOMINAL RATE IN PERCENT: ";R:IF R= 0THEN 370 380 PRINT :R= R/ 100 390 IF Z= 2THEN 420 400 INPUT "MORTGAGE LIFE - YEARS, MONTHS: ";Y,M:PRINT 410 IF Z= 3THEN 440 420 INPUT "AMOUNT TO BE BORROWED: ";A:PRINT 430 IF Z= 4THEN 450 440 INPUT "AMOUNT OF A MONTHLY PAYMENT: ";P:PRINT 450 INPUT "STARTING DATE OF LOAN (E.G. 8,1979): ";T1,T2:PRINT 460 IF Z= 2THEN 480 470 INPUT "TABLE LENGTH (YEARS): ";T3:PRINT 480 INPUT "ENTER 1 - ANNUAL OR 2 - MONTHLY SUMMARY: ";Z1:Z1= ABS (Z1- 2) 490 PLOT 18 500 PRINT :PLOT 3,64,0 510 IF Z= 2THEN 550 520 GOSUB 2220 530 N= 12* Y+ M 540 IF Z= 1THEN 790 550 R= R/ 12 560 IF Z= 3THEN 710 570 IF Z= 4THEN 760 580 IF (A* R/ P)< 1THEN 620 590 PLOT 3,0,21 600 PRINT "THE FIRST MONTH'S PMT. CHARGE WILL NOT COVER ITS INTEREST" 610 PLOT 3,0,23:GOTO 2190 620 N= - (LOG (1- (A* R)/ P))/ LOG (1+ R) 630 N= INT (N)+ 1 640 Y= INT (N/ 12) 650 M= N- 12* Y 660 IF Z= 2THEN T3= Y 670 IF Z= 2AND M> 0THEN T3= T3+ 1 680 IF Z< > 2THEN 700 690 GOSUB 2220 700 GOTO 920 710 A= (P* (1- 1/ ((1+ R)^ N)))/ R 720 A= (A* 100+ 5)/ 10 730 A= INT (A) 740 A= A/ 10 750 GOTO 920 760 P= A* R* (1+ R)^ N/ ((1+ R)^ N- 1) 770 GOSUB 2360 780 GOTO 920 790 R= (P* N/ A- 1)/ 12 800 R1= R 810 IF R> 0THEN 870 820 PLOT 3,0,21 830 PRINT "RATE IS NEGATIVE OR ZERO" 840 PLOT 3,0,23:GOTO 2190 850 R= R- 2* R1 860 R= R+ R1 870 C= P* (1/ (R/ ((1+ R)^ N- 1)+ R)) 880 IF ABS (C- A)< .01THEN 920 890 R1= R1/ 2 900 IF C- A< 0THEN 850 910 GOTO 860 920 PLOT 3,0,20:PRINT 930 IF 12* P> (R* A* 12+ 1)THEN 980 940 PRINT "YOUR FIRST YEAR'S PAYMENTS ARE"12* P 950 PRINT "THE FIRST YEAR'S INTEREST IS"R* A* 12 960 PRINT "THEREFORE, THE LIFE OF THE MORTGAGE IS UNDEFINED" 970 PLOT 3,0,25:GOTO 2190 980 PLOT 14 990 FOR JJ= 2TO 30STEP 2:PLOT 3,0,JJ,11:NEXT JJ 1000 PLOT 3,0,2,15 1010 GOSUB 1020:GOTO 1030 1020 FOR JJ= 1TO 63:PRINT "*";:NEXT :PRINT "*":RETURN 1030 PRINT 1040 PRINT " TERMS OF LOAN" 1050 PRINT 1060 PRINT " NOMINAL ANNUAL RATE ="; 1070 PRINT R* 1200;" %" 1080 PRINT 1090 PRINT " LIFE OF LOAN ="; 1100 PRINT Y;" YEARS,"M" MONTHS" 1110 PRINT 1120 PRINT " AMOUNT BORROWED ="; 1130 PRINT "$";A 1140 PRINT 1150 PRINT " MONTHLY PAYMENT ="; 1160 PRINT "$";P:PLOT 18 1170 PRINT 1180 PRINT 1190 IF Z= 2THEN 1210 1200 GOTO 1220 1210 PRINT "THE MORTGAGE LIFE HAS BEEN ROUNDED UP TO NEAREST MONTH" 1220 PRINT 1230 GOSUB 1020 1240 PLOT 3,64,0 1250 FOR JJ= 0TO 2500:NEXT JJ 1260 PLOT 12 1270 PRINT 1280 PLOT 6,6,14,3,11,0:PRINT "A M O R T I Z A T I O N S C H E D U L E" 1290 PLOT 15,6,2 1300 PRINT 1310 PRINT 1320 Z2= 0 1330 S1= 0 1340 S2= 0 1350 IF T1= 12THEN 1380 1360 M2= T1 1370 GOTO 1400 1380 T2= T2+ 1 1390 M2= 0 1400 M3= M2+ 1 1410 IF Z1= 1THEN GOSUB 1500 1420 IF Z1< > 1THEN GOSUB 1440 1430 GOTO 1560 1440 PLOT 18,3,0,4:PRINT " ","BEGINNING" 1450 PRINT TAB( 8);"PRINCIPAL";TAB( 40);"PRINCIPAL" 1460 PRINT " MONTH","OUTSTANDING","INTEREST","REPAYMENT" 1470 PLOT 3,10,8:PRINT "FOR THE CALENDAR YEAR"T2 1480 PRINT 1490 RETURN 1500 PLOT 18:PRINT TAB( 40);"ENDING" 1510 PRINT TAB( 24);"PRINCIPAL";TAB( 40);"PRINCIPAL" 1520 PRINT " YEAR","INTEREST","REPAYMENT","OUTSTANDING" 1530 PRINT 1540 PRINT 1550 RETURN 1560 FOR M1= M3TO T4+ M3 1570 I1= A* R 1580 I1= (I1* 1000+ 5)/ 10 1590 I1= INT (I1) 1600 I1= I1/ 100 1610 IF P< (A+ I1)THEN 1640 1620 P1= A 1630 GOTO 1660 1640 P1= P- I1 1650 IF A< PAND M1= T4+ M3THEN P1= A:A= 0:A1= P1+ I1:GOTO 1690 1660 A1= A 1670 IF A= 0THEN 1690 1680 A= A1- P1 1690 S1= S1+ I1 1700 S2= S2+ P1 1710 M2= M2+ 1 1720 IF Z1= 1THEN 1970 1730 PLOT 23:PRINT TAB( 4);DATE$(M2); 1740 PLOT 18:PRINT TAB( FN I(A1));INT (A1);".";RIGHT$ (STR$ (INT (FN C(A1)* 100+ 1000.5)),2); 1750 PLOT 17:PRINT TAB( FN J(I1));INT (I1);".";RIGHT$ (STR$ (INT (FN C(I1)* 100+ 1000.5)),2); 1760 PLOT 22:PRINT TAB( FN K(P1));INT (P1);".";RIGHT$ (STR$ (INT (FN C(P1)* 100+ 1000.5)),2) 1770 IF M2= 12THEN 1800 1780 IF A> 0THEN 2110 1790 Z2= 1 1800 PRINT 1810 PLOT 19:Z1= 1 1820 GOSUB 2390 1830 Z1= 0:IF Z3= 1THEN Z1= 1 1840 PRINT " PRINCIPAL REPAID DURING";T2;" =";SPC( U3); 1850 PRINT INT (S2);".";RIGHT$ (STR$ (INT (FN C(S2)* 100+ 1000.5)),2) 1860 PRINT " INTEREST PAID DURING ";T2;" =";SPC( U2); 1870 PRINT INT (S1);".";RIGHT$ (STR$ (INT (FN C(S1)* 100+ 1000.5)),2) 1880 PRINT " PRINCIPAL OUTSTANDING AT YEAR END";" ="SPC( U1); 1890 PRINT INT (A);".";RIGHT$ (STR$ (INT (FN C(A)* 100+ 1000.5)),2) 1900 IF Z2= 1THEN 2140 1910 T2= T2+ 1 1920 GOSUB 2260 1930 PRINT 1940 IF M1= T4THEN 2140 1950 GOSUB 1470 1960 GOTO 2080 1970 IF M2= 12THEN 2000 1980 IF A> 0THEN 2110 1990 Z2= 1 2000 IF Z1= 1THEN GOSUB 2580 2010 PLOT 23:PRINT T2; 2020 PLOT 17:PRINT TAB( FN I(S1));INT (S1);".";RIGHT$ (STR$ (INT (FN C(S1)* 100+ 1000.5)),2); 2030 PLOT 22:PRINT TAB( FN J(S2));INT (S2);".";RIGHT$ (STR$ (INT (FN C(S2)* 100+ 1000.5)),2); 2040 PLOT 18:PRINT TAB( FN K(A));INT (A);".";RIGHT$ (STR$ (INT (FN C(A)* 100+ 1000.5)),2) 2050 T2= T2+ 1 2060 IF M1= T4THEN 2140 2070 IF Z2= 1THEN 2140 2080 S1= 0 2090 S2= 0 2100 M2= 0 2110 NEXT M1 2120 IF Z1= 1THEN Z3= 1 2130 IF Z2< > 1AND M2< > 12AND A> 0THEN Z2= 1:GOTO 1800 2140 PLOT 6,2 2150 IF Z1= 1THEN 2180 2160 VV= - 9999:GOSUB 2260 2170 PLOT 3,0,28:PRINT SPC( 38)"":PLOT 3,0,29:PRINT SPC( 38)"" 2180 PLOT 3,0,30:GOTO 2190 2190 INPUT "TYPE Y TO CONTINUE: ";Q$ 2200 IF Q$= "Y"THEN CLEAR :GOTO 170 2210 PLOT 6,2,12,1 2220 X1= Y* 12+ M 2230 IF X1= 0THEN T4= 12* T3- 1 2240 IF X1> 0THEN T4= X1+ M3- 1 2250 RETURN 2260 REM -- CLEAR CALENDAR YEAR'S SCHEDULE 2270 PLOT 3,0,28:PRINT "TO STOP PROGRAM - HIT 'BREAK' KEY..." 2280 PRINT "THEN TO RESUME - HIT 'RETURN' KEY." 2290 GOSUB 2450 2300 IF VV= - 9999THEN RETURN 2310 FOR JJ= 0TO 2500:NEXT JJ:REM - ALLOW TIME TO LOOK AT SCHEDULE 2320 PLOT 14 2330 FOR JJ= 10TO 24STEP 2:PLOT 3,0,JJ,11:NEXT JJ 2340 PLOT 3,0,4,15 2350 RETURN 2360 REM -- ROUND MONTHLY PAYMENT 2370 P= INT (P* 100+ .5)* .01 2380 RETURN 2390 U1= LEN (STR$ (INT (A))) 2400 U2= LEN (STR$ (INT (S1))) 2410 U3= LEN (STR$ (INT (S2))) 2420 IF U1> = U2AND U1> = U3THEN U2= U1- U2:U3= U1- U3:U1= 0:RETURN 2430 IF U2> = U1AND U2> = U3THEN U1= U2- U1:U3= U2- U3:U2= 0:RETURN 2440 IF U3> = U1AND U3> = U2THEN U1= U3- U1:U2= U3- U2:U3= 0:RETURN 2450 PLOT 3,64,0:GOSUB 2520:GOSUB 2540:PLOT 3,38,28:PRINT "TOTAL" 2460 PLOT 3,44,28:PRINT "INTEREST ";SPC( U1); 2470 PRINT INT (S4);".";RIGHT$ (STR$ (INT (FN C(S4)* 100+ 1000.5)),2) 2480 PLOT 3,44,29:PRINT "PRINCIPAL ";SPC( U2); 2490 PRINT INT (P4);".";RIGHT$ (STR$ (INT (FN C(P4)* 100+ 1000.5)),2) 2500 PLOT 3,64,0 2510 RETURN 2520 S4= S4+ S1:P4= P4+ S2 2530 RETURN 2540 U1= LEN (STR$ (INT (S4))) 2550 U2= LEN (STR$ (INT (P4))) 2560 IF U1> = U2THEN U2= U1- U2:U1= 0:RETURN 2570 IF U2> U1THEN U1= U2- U1:U2= 0:RETURN 2580 SC= SC+ 1:IF SC= 29THEN ZZ= CALL (1):SC= 28 2590 GOSUB 2600:PRINT SPC( 63)"" 2600 PLOT 3,0,SC:RETURN