10 REM MORTGAGE ANALYSIS. THIS PROGRAM IS A MODIFIED VERSION 20 REM OF SYSTEM LIBRARY PROGRAM MORGAG,REV. B. 25 REM HP CONTRIBUTED LIBRARY, REV. C, 2/75 30 DIM X$[54],F$[27],M$[36] 40 LET C1=LOG(10) 50 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" 60 DEF FNC(X)=9*(INT(LOG(X)/C1)+2) 70 PRINT "* MORTGAGE ANALYSIS *" 80 PRINT 90 PRINT "IF YOU WANT TO FIND:" 100 PRINT " THE RATE, TYPE '1'" 110 PRINT " THE LIFE, TYPE '2'" 120 PRINT " THE AMOUNT BORROWED, TYPE '3'" 130 PRINT " THE MONTHLY PAYMENT, TYPE '4'" 140 PRINT "WHICH DO YOU WANT"; 150 INPUT Z 160 PRINT 170 IF Z=1 THEN 230 180 PRINT "NOMINAL ANNUAL RATE IN PERCENT"; 190 INPUT R 200 R=R/100 210 PRINT 220 IF Z=2 THEN 270 230 PRINT "MORTGAGE LIFE: YEARS, MONTHS"; 240 INPUT Y,M 250 PRINT 260 IF Z=3 THEN 310 270 PRINT "AMOUNT TO BE BORROWED"; 280 INPUT A 290 PRINT 300 IF Z=4 THEN 340 310 PRINT "AMOUNT OF ONE MONTHLY PAYMENT"; 320 INPUT P 330 PRINT 340 PRINT "SETTLEMENT DATE (MO,YEAR)"; 350 INPUT T1,T2 360 PRINT 370 PRINT "TABLE LENGTH (YEARS)"; 380 INPUT T3 390 PRINT 400 PRINT "ANNUAL OR MONTHLY SUMMMARY(1OR0)"; 410 INPUT Z1 420 PRINT 430 X$="11X,1D.DD11X,1D.DD10X,2D.DD09X,3D.DD08X,4D.DD07X,5D.DD" 440 IF Z=2 THEN 470 450 LET N=12*Y+M 460 IF Z=1 THEN 650 470 R=R/12 480 IF Z=3 THEN 580 490 IF Z=4 THEN 630 500 IF (A*R/P)<1 THEN 530 510 PRINT "THE FIRST MONTHS PMT. CHARGE WILL NOT COVER IT'S INTEREST" 520 STOP 530 LET N=-(LOG(1-(A*R)/P))/LOG(1+R) 540 LET N=INT(N)+1 550 LET Y=INT(N/12) 560 LET M=N-12*Y 570 GOTO 770 580 LET A=(P*(1-1/((1+R)^N)))/R 590 LET A=(A*100+5)/10 600 LET A=INT(A) 610 LET A=A/10 620 GOTO 770 630 P=A*R*(1+R)^N/((1+R)^N-1) 640 GOTO 770 650 R=(P*N/A-1)/12 660 R1=R 670 IF R>0 THEN 720 680 PRINT "RATE IS NEGATIVE OR ZERO" 690 STOP 700 R=R-2*R1 710 R=R+R1 720 C=P*(1/(R/((1+R)^N-1)+R)) 730 IF ABS(C-A)<.01 THEN 770 740 R1=R1/2 750 IF C-A<0 THEN 700 760 GOTO 710 770 PRINT 780 IF 12*P>(R*A*12+1) THEN 830 790 PRINT "YOUR FIRST YEARS'S PAYMENTS ARE"12*P 800 PRINT "THE FIRST YEARS'S INTEREST IS"R*A*12 810 PRINT "THEREFORE, THE LIFE OF THE MORTGAGE IS UNDEFINED" 820 STOP 830 PRINT "***********************************************************" 840 PRINT 850 PRINT " MORTGAGE TERMS" 860 PRINT 870 PRINT " NOMINAL ANNUAL RATE= ";R*1200;" %" 880 PRINT 890 PRINT " LIFE OF MORTGAGE =";Y;" YEARS,"M" MONTHS" 900 PRINT 910 PRINT " AMOUNT BORROWED = $"; 920 PRINT USING X$[FNC(A)-8,FNC(A)];A 930 PRINT 940 PRINT " MONTHLY PAYMENT = $"; 950 PRINT USING X$[FNC(P)-8,FNC(P)];P 960 PRINT 970 PRINT 980 IF Z=2 THEN 1000 990 GOTO 1010 1000 PRINT "THE MORTGAGE LIFE HAS BEEN ROUNDED UP TO NEAREST MONTH" 1010 PRINT 1020 PRINT "------------------------------------------------------------" 1030 PRINT 1040 PRINT " MORTGAGE TABLE" 1050 PRINT 1060 PRINT 1070 LET Z2=0 1080 LET S1=0 1090 LET S2=0 1100 IF T1=12 THEN 1130 1110 LET M2=T1 1120 GOTO 1150 1130 LET T2=T2+1 1140 LET M2=0 1150 LET M3=M2+1 1160 IF Z1=1 THEN 1240 1170 PRINT " ","BEGINNING" 1180 PRINT " ","PRINCIPAL"," ","PRINCIPAL" 1190 PRINT " MONTH","OUTSTANDING","INTEREST","REPAYMENT" 1200 PRINT 1210 PRINT 1220 PRINT " ","FOR THE CALENDAR YEAR"T2 1230 GOTO 1290 1240 PRINT " "," "," ","ENDING" 1250 PRINT " "," ","PRINCIPAL","PRINCIPAL" 1260 PRINT "YEAR","INTEREST","REPAYMENT","OUTSTANDING" 1270 PRINT 1280 PRINT 1290 FOR M1=M3 TO 12*T3 1300 LET I1=A*R 1310 LET I1=(I1*1000+5)/10 1320 LET I1=INT(I1) 1330 LET I1=I1/100 1340 IF P<(A+I1) THEN 1370 1350 LET P1=A 1360 GOTO 1380 1370 LET P1=P-I1 1380 LET A1=A 1390 LET A=A1-P1 1400 LET S1=S1+I1 1410 LET S2=S2+P1 1420 LET M2=M2+1 1430 IF Z1=1 THEN 1790 1440 PRINT SPA(4);M$[3*M2-2,3*M2]; 1450 IF A1>1 THEN 1480 1460 F$[1,9]="11X,1D.DD" 1470 GOTO 1490 1480 F$[1,9]=X$[FNC(A1)-8,FNC(A1)] 1490 IF I1>1 THEN 1520 1500 F$[10,18]="11X,1D.DD" 1510 GOTO 1530 1520 F$[10,18]=X$[FNC(I1)-8,FNC(I1)] 1530 IF P1>1 THEN 1560 1540 F$[19,27]="11X,1D.DD" 1550 GOTO 1570 1560 F$[19,27]=X$[FNC(P1)-8,FNC(P1)] 1570 PRINT USING F$;A1,I1,P1 1580 IF M2=12 THEN 1610 1590 IF A>0 THEN 2020 1600 LET Z2=1 1610 PRINT 1620 PRINT " PRINCIPAL REPAID DURING ";T2; 1630 PRINT USING X$[FNC(S2)-8,FNC(S2)];S2 1640 PRINT " INTEREST PAID DURING ";T2; 1650 PRINT USING X$[FNC(S1)-8,FNC(S1)];S1 1660 PRINT " PRINCIPAL OUTSTANDING AT YEAR END"; 1670 IF A>1 THEN 1700 1680 PRINT USING "11X,D.DD";A 1690 GOTO 1710 1700 PRINT USING X$[FNC(A)-8,FNC(A)];A 1710 IF Z2=1 THEN 2030 1720 LET T2=T2+1 1730 PRINT 1740 PRINT "---------------------------------------------------------,-" 1750 PRINT 1760 IF M1=12*T3 THEN 2030 1770 PRINT " ","FOR THE CALENDAR YEAR"T2 1780 GOTO 1990 1790 IF M2=12 THEN 1820 1800 IF A>0 THEN 2020 1810 LET Z2=1 1820 PRINT T2; 1830 IF S1>1 THEN 1860 1840 F$[1,9]="11X,1D.DD" 1850 GOTO 1870 1860 F$[1,9]=X$[FNC(S1)-8,FNC(S1)] 1870 IF S2>1 THEN 1900 1880 F$[10,18]="11X,1D.DD" 1890 GOTO 1910 1900 F$[10,18]=X$[FNC(S2)-8,FNC(S2)] 1910 IF A>1 THEN 1940 1920 F$[19,27]="11X,1D.DD" 1930 GOTO 1950 1940 F$[19,27]=X$[FNC(A)-8,FNC(A)] 1950 PRINT USING F$;S1,S2,A 1960 LET T2=T2+1 1970 IF M1=12*T3 THEN 2030 1980 IF Z2=1 THEN 2030 1990 LET S1=0 2000 LET S2=0 2010 LET M2=0 2020 NEXT M1 2030 PRINT "*****************************************************" 2040 END