Compucolor.org – Virtual Media

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