Listing of file='MORGAG.BAS;01' on disk='vmedia/chip_75-sector.ccvf'
10000 CLEAR 100 10010 DEF FN C(I)= INT (I* 100- INT (I)* 100+ .5)/ 100 10020 DEF FN I(I)= 16- LEN (STR$ (INT (I)))- 3* Z1 10030 DEF FN J(I)= 29- LEN (STR$ (INT (I)))+ Z1 10040 DEF FN K(I)= 46- LEN (STR$ (INT (I)))+ 2* Z1 10050 PLOT 12,14,22 10060 DIM DATE$(12) 10070 DATA "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC" 10080 FOR I= 1TO 12:READ DATE$(I):NEXT 10090 PLOT 13,3,20,0:PRINT "* LOAN ANALYSIS *" 10100 PRINT 10110 L= 0:SC= 8 10120 PRINT "IF YOU WANT TO FIND :" 10130 PRINT " THE RATE, TYPE '1'" 10140 PRINT " THE LIFE, TYPE '2'" 10150 PRINT " THE AMOUNT BORROWED, TYPE '3'" 10160 PRINT " THE MONTHLY PAYMENT, TYPE '4'" 10170 PRINT "WHICH DO YOU WANT "; 10180 INPUT Z 10190 PRINT 10200 IF Z= 1 THEN 10260 10210 PRINT "NOMINAL ANNUAL RATE IN PERCENT "; 10220 INPUT R 10230 R= R/ 100 10240 PRINT 10250 IF Z= 2 THEN 10300 10260 PRINT "MORTGAGE LIFE: YEARS, MONTHS "; 10270 INPUT Y,M 10280 PRINT 10290 IF Z= 3 THEN 10340 10300 PRINT "AMOUNT TO BE BORROWED "; 10310 INPUT A 10320 PRINT 10330 IF Z= 4 THEN 10370 10340 PRINT "AMOUNT OF ONE MONTHLY PAYMENT "; 10350 INPUT P 10360 PRINT 10370 PRINT "STARTING DATE OF LOAN (IE 8,1976) "; 10380 INPUT T1,T2 10390 PRINT 10400 IF Z= 2 THEN 10440 10410 PRINT "TABLE LENGTH (YEARS) "; 10420 INPUT T3 10430 PRINT 10440 PRINT "ANNUAL OR MONTHLY SUMMARY (1 OR 0) "; 10450 INPUT Z1 10460 PLOT 18 10470 PRINT : PLOT 3,64,0 10480 IF Z= 2 THEN 10520 10490 GOSUB 12190 10500 N= 12* Y+ M 10510 IF Z= 1 THEN 10760 10520 R= R/ 12 10530 IF Z= 3 THEN 10680 10540 IF Z= 4 THEN 10730 10550 IF (A* R/ P) < 1 THEN 10590 10560 PLOT 3,0,21 10570 PRINT "THE FIRST MONTHS PMT. CHARGE WILL NOT COVER IT'S INTEREST" 10580 PLOT 3,0,23:GOTO 12160 10590 N= - (LOG (1- (A* R)/ P))/ LOG (1+ R) 10600 N= INT (N)+ 1 10610 Y= INT (N/ 12) 10620 M= N- 12* Y 10630 IF Z= 2 THEN T3= Y 10640 IF Z= 2 AND M> 0 THEN T3= T3+ 1 10650 IF Z < > 2 THEN 10670 10660 GOSUB 12190 10670 GOTO 10890 10680 A= (P* (1- 1/ ((1+ R)^ N)))/ R 10690 A= (A* 100+ 5)/ 10 10700 A= INT (A) 10710 A= A/ 10 10720 GOTO 10890 10730 P= A* R* (1+ R)^ N/ ((1+ R)^ N- 1) 10740 GOSUB 12330 10750 GOTO 10890 10760 R= (P* N/ A- 1)/ 12 10770 R1= R 10780 IF R > 0 THEN 10840 10790 PLOT 3,0,21 10800 PRINT "RATE IS NEGATIVE OR ZERO" 10810 PLOT 3,0,23:GOTO 12160 10820 R= R- 2* R1 10830 R= R+ R1 10840 C= P* (1/ (R/ ((1+ R)^ N- 1)+ R)) 10850 IF ABS (C- A) < .01 THEN 10890 10860 R1= R1/ 2 10870 IF C- A < 0 THEN 10820 10880 GOTO 10830 10890 PLOT 3,0,20:PRINT 10900 IF 12* P > (R* A* 12+ 1) THEN 10950 10910 PRINT "YOUR FIRST YEAR'S PAYMENTS ARE"12* P 10920 PRINT "THE FIRST YEAR'S INTEREST IS"R* A* 12 10930 PRINT "THEREFORE, THE LIFE OF THE MORTGAGE IS UNDEFINED" 10940 PLOT 3,0,25:GOTO 12160 10950 PLOT 14 10960 FOR JJ= 2 TO 30 STEP 2 : PLOT 3,0,JJ,11 : NEXT JJ 10970 PLOT 3,0,2,15 10980 GOSUB 10990:GOTO 11000 10990 FOR JJ= 1TO 63:PRINT "*";:NEXT :PRINT "*":RETURN 11000 PRINT 11010 PRINT " TERMS OF LOAN" 11020 PRINT 11030 PRINT " NOMINAL ANNUAL RATE ="; 11040 PRINT R* 1200;" %" 11050 PRINT 11060 PRINT " LIFE OF LOAN ="; 11070 PRINT Y;" YEARS,"M" MONTHS" 11080 PRINT 11090 PRINT " AMOUNT BORROWED ="; 11100 PRINT "$";A 11110 PRINT 11120 PRINT " MONTHLY PAYMENT ="; 11130 PRINT "$";P:PLOT 18 11140 PRINT 11150 PRINT 11160 IF Z= 2 THEN 11180 11170 GOTO 11190 11180 PRINT "THE MORTGAGE LIFE HAS BEEN ROUNDED UP TO NEAREST MONTH" 11190 PRINT 11200 GOSUB 10990 11210 PLOT 3,64,0 11220 FOR JJ= 0 TO 2500 : NEXT JJ 11230 PLOT 12 11240 PRINT 11250 PLOT 6,6,14,3,4,0:PRINT "A M O R T I Z A T I O N S C H E D U L E" 11260 PLOT 15,6,2 11270 PRINT 11280 PRINT 11290 Z2= 0 11300 S1= 0 11310 S2= 0 11320 IF T1= 12 THEN 11350 11330 M2= T1 11340 GOTO 11370 11350 T2= T2+ 1 11360 M2= 0 11370 M3= M2+ 1 11380 IF Z1= 1 THEN GOSUB 11470 11390 IF Z1 < > 1 THEN GOSUB 11410 11400 GOTO 11530 11410 PLOT 18,3,0,4:PRINT " ","BEGINNING" 11420 PRINT TAB( 8);"PRINCIPAL";TAB( 40);"PRINCIPAL" 11430 PRINT " MONTH","OUTSTANDING","INTEREST","REPAYMENT" 11440 PLOT 3,10,8:PRINT "FOR THE CALENDAR YEAR"T2 11450 PRINT 11460 RETURN 11470 PLOT 18:PRINT TAB( 40);"ENDING" 11480 PRINT TAB( 24);"PRINCIPAL";TAB( 40);"PRINCIPAL" 11490 PRINT " YEAR","INTEREST","REPAYMENT","OUTSTANDING" 11500 PRINT 11510 PRINT 11520 RETURN 11530 FOR M1= M3 TO T4+ M3 11540 I1= A* R 11550 I1= (I1* 1000+ 5)/ 10 11560 I1= INT (I1) 11570 I1= I1/ 100 11580 IF P < (A+ I1) THEN 11610 11590 P1= A 11600 GOTO 11630 11610 P1= P- I1 11620 IF A< PAND M1= T4+ M3THEN P1= A:A= 0 11630 A1= A 11640 IF A= 0THEN 11660 11650 A= A1- P1 11660 S1= S1+ I1 11670 S2= S2+ P1 11680 M2= M2+ 1 11690 IF Z1= 1 THEN 11940 11700 PLOT 23:PRINT TAB( 4);DATE$(M2); 11710 PLOT 18:PRINT TAB( FN I(A1));INT (A1);".";RIGHT$ (STR$ (INT (FN C(A1)* 100+ 1000.5)),2); 11720 PLOT 17:PRINT TAB( FN J(I1));INT (I1);".";RIGHT$ (STR$ (INT (FN C(I1)* 100+ 1000.5)),2); 11730 PLOT 22:PRINT TAB( FN K(P1));INT (P1);".";RIGHT$ (STR$ (INT (FN C(P1)* 100+ 1000.5)),2) 11740 IF M2= 12 THEN 11770 11750 IF A > 0 THEN 12080 11760 Z2= 1 11770 PRINT 11780 PLOT 19 : Z1= 1 11790 GOSUB 12360 11800 Z1= 0 : IF Z3= 1 THEN Z1= 1 11810 PRINT " PRINCIPAL REPAID DURING";T2;" =";SPC( U3); 11820 PRINT INT (S2);".";RIGHT$ (STR$ (INT (FN C(S2)* 100+ 1000.5)),2) 11830 PRINT " INTEREST PAID DURING ";T2;" =";SPC( U2); 11840 PRINT INT (S1);".";RIGHT$ (STR$ (INT (FN C(S1)* 100+ 1000.5)),2) 11850 PRINT " PRINCIPAL OUTSTANDING AT YEAR END";" ="SPC( U1); 11860 PRINT INT (A);".";RIGHT$ (STR$ (INT (FN C(A)* 100+ 1000.5)),2) 11870 IF Z2= 1 THEN 12110 11880 T2= T2+ 1 11890 GOSUB 12230 11900 PRINT 11910 IF M1= T4 THEN 12110 11920 GOSUB 11440 11930 GOTO 12050 11940 IF M2= 12 THEN 11970 11950 IF A > 0 THEN 12080 11960 Z2= 1 11970 IF Z1= 1THEN GOSUB 12550 11980 PLOT 23 : PRINT T2; 11990 PLOT 17:PRINT TAB( FN I(S1));INT (S1);".";RIGHT$ (STR$ (INT (FN C(S1)* 100+ 1000.5)),2); 12000 PLOT 22:PRINT TAB( FN J(S2));INT (S2);".";RIGHT$ (STR$ (INT (FN C(S2)* 100+ 1000.5)),2); 12010 PLOT 18:PRINT TAB( FN K(A));INT (A);".";RIGHT$ (STR$ (INT (FN C(A)* 100+ 1000.5)),2) 12020 T2= T2+ 1 12030 IF M1= T4 THEN 12110 12040 IF Z2= 1 THEN 12110 12050 S1= 0 12060 S2= 0 12070 M2= 0 12080 NEXT M1 12090 IF Z1= 1 THEN Z3= 1 12100 IF Z2< > 1 AND M2< > 12 AND A> 0 THEN Z2= 1 : GOTO 11770 12110 PLOT 6,2 12120 IF Z1= 1THEN 12150 12130 VV= - 9999:GOSUB 12230 12140 PLOT 3,0,28:PRINT SPC( 38)"":PLOT 3,0,29:PRINT SPC( 38)"" 12150 PLOT 3,0,29:GOTO 12160 12160 INPUT "TYPE Y IF YOU WANT TO DO ANOTHER : ";Q$ 12170 IF Q$= "Y"THEN 10000 12180 LOAD "MENU;1":RUN 12190 X1= Y* 12+ M 12200 IF X1= 0 THEN T4= 12* T3- 1 12210 IF X1> 0 THEN T4= X1+ M3- 1 12220 RETURN 12230 REM -- CLEAR CALENDAR YEAR'S SCHEDULE 12240 PLOT 3,0,28:PRINT "TO STOP PROGRAM - HIT 'BREAK' KEY..." 12250 PRINT "THEN TO RESUME - HIT 'RETURN' KEY." 12260 GOSUB 12420 12270 IF VV= - 9999THEN RETURN 12280 FOR JJ= 0 TO 2500:NEXT JJ: REM - ALLOW TIME TO LOOK AT SCHEDULE 12290 PLOT 14 12300 FOR JJ= 10 TO 24 STEP 2 : PLOT 3,0,JJ,11 : NEXT JJ 12310 PLOT 3,0,4,15 12320 RETURN 12330 REM -- ROUND MONTHLY PAYMENT 12340 P= INT (P* 100+ .5)* .01 12350 RETURN 12360 U1= LEN (STR$ (INT (A))) 12370 U2= LEN (STR$ (INT (S1))) 12380 U3= LEN (STR$ (INT (S2))) 12390 IF U1> = U2AND U1> = U3THEN U2= U1- U2:U3= U1- U3:U1= 0:RETURN 12400 IF U2> = U1AND U2> = U3THEN U1= U2- U1:U3= U2- U3:U2= 0:RETURN 12410 IF U3> = U1AND U3> = U2THEN U1= U3- U1:U2= U3- U2:U3= 0:RETURN 12420 PLOT 3,64,0:GOSUB 12490:GOSUB 12510:PLOT 3,38,28:PRINT "TOTAL" 12430 PLOT 3,44,28:PRINT "INTEREST ";SPC( U1); 12440 PRINT INT (S4);".";RIGHT$ (STR$ (INT (FN C(S4)* 100+ 1000.5)),2) 12450 PLOT 3,44,29:PRINT "PRINCIPAL ";SPC( U2); 12460 PRINT INT (P4);".";RIGHT$ (STR$ (INT (FN C(P4)* 100+ 1000.5)),2) 12470 PLOT 3,64,0 12480 RETURN 12490 S4= S4+ S1:P4= P4+ S2 12500 RETURN 12510 U1= LEN (STR$ (INT (S4))) 12520 U2= LEN (STR$ (INT (P4))) 12530 IF U1> = U2THEN U2= U1- U2:U1= 0:RETURN 12540 IF U2> U1THEN U1= U2- U1:U2= 0:RETURN 12550 SC= SC+ 1:IF SC= 29THEN ZZ= CALL (0):SC= 28 12560 GOSUB 12570:PRINT SPC( 63)"" 12570 PLOT 3,0,SC:RETURN