10' NAME--MORTGAGE 20' 30' DESCRIPTION--COMPUTES RATE, LIFE, AMOUNT & MONTHLY PAYMENT 40' 50' SOURCE--REVISED 9/10/68 BY JIM GUERBER 60' 70' THIS PROGRAM WAS WRITTEN FOR STUDENT USE AT AMOS TUCK SCHOOL 80' WHICH DOES NOT ASSUME RESPONSIBILITY FOR ITS ACCURACY. 90' 95' * * * * * * * * MAIN PROGRAM * * * * * * * * * * 97' 100 DIM G$(12),K(70) 110 DEF FNP(N8,N9) 111 IF N9<>0 THEN 114 112 PRINT TAB(N8-3); 113 GOTO 120 114 PRINT TAB(N8-3-INT(FNS(LOG(ABS(N9))/LOG(10)+.000001))); 120 IF N9=0 THEN 370 130 LET P9=0 140 LET C9=INT(N9*100+.5) 150 LET F9=INT(C9/100) 160 LET R9=C9-100*F9 170 LET T9=INT(F9/10) 180 LET P9=P9+1 190 LET T9=INT(F9/10) 200 LET O(P9)=F9-10*T9+48 210 LET F9=T9 220 IF F9>0 THEN 180 230 LET O(0)=P9+3 240 LET O(P9+1)=46 250 LET O(P9+2)=INT(R9/10) 260 LET O(P9+3)=R9-O(P9+2)*10+48 270 FOR I9=1 TO P9/2 280 LET T9=O(I9) 290 LET O(I9)=O(P9+1-I9) 300 LET O(P9+1-I9)=T9 310 NEXT I9 320 LET O(P9+2)=O(P9+2)+48 330 CHANGE O TO Q$ 340 PRINT Q$; 350 LET FNP=C9/100 360 GO TO 380 370 PRINT" 0"; 380 FNEND 385 DEF FNS(N7)=(ABS(N7)+N7)/2 390 MAT READ G$(12) 400 GOSUB3220 410 IF K$<>"RAT" THEN 440 420 LET Z = 1 430 GO TO 570 440 IF K$<>"LIF" THEN 470 450 LET Z = 2 460 GOTO 570 470 IF K$<>"AMO" THEN 500 480 LET Z = 3 490 GO TO 570 500 IF K$<>"MON" THEN 530 510 LET Z = 4 520 GOTO 570 530 PRINT "YOUR INPUT DATA IS SPELLED INCORRECTLY--START OVER." 540 PRINT 550 GOSUB 3240 560 GOTO 410 570 PRINT 580 IF Z = 1 THEN 690 590 PRINT "WHAT IS THE ANNUAL INTEREST RATE IN PER CENT"; 600 LET R9=R9+1 610 INPUT R 620 LET R=R/100 670 PRINT 680 IF Z = 2 THEN 730 690 PRINT "WHAT IS THE LIFE OF THE MORTGAGE: YEARS, MONTHS"; 700 INPUT Y, M 710 PRINT 720 IF Z = 3 THEN 770 730 PRINT "WHAT IS THE AMOUNT TO BE BORROWED"; 740 INPUT A 750 PRINT 760 IF Z = 4 THEN 800 770 PRINT "WHAT IS THE AMOUNT OF ONE MONTHLY PAYMENT"; 780 INPUT P 790 PRINT 800 GO TO 1330 810 PRINT"WHAT IS THE MONTH AND YEAR IN WHICH THE MORTGAGE LOAN" 820 PRINT "IS TO BE MADE (EG. JUNE,1969)"; 830 INPUT Y$, T2 840 CHANGE Y$ TO K 850 LET K(0)=3 860 CHANGE K TO K$ 870 FOR I = 1 TO 12 880 CHANGE G$(I) TO K 890 LET K(0)=3 900 CHANGE K TO G$ 910 IF K$=G$ THEN950 920 NEXT I 930 PRINT"YOU HAVE SPELLED THE NAME OF THE MONTH INCORRECTLY -- START OVER" 940 GO TO 810 950 LET T1 = I 960 PRINT 970 PRINT "ENTER THE BEGINNING AND ENDING CALENDAR YEARS FOR WHICH YOU"; 980 PRINT "WANT THE MORTGAGE TABLE PRINTED OUT"; 990 MAT INPUT X 1000 IF NUM>2 THEN 1150 1010 IF NUM=0 THEN 1120 1020 IF NUM=1 THEN 1100 1030 IF X(1)<=X(2) THEN 1070 1040 LET T4=X(2) 1050 LET T3=X(1) 1060 GOTO 1170 1070 LET T4=X(1) 1080 LET T3=X(2) 1090 GOTO 1170 1100 LET T4=T3=X(1) 1110 GOTO 1170 1120 LET T4=T2 1130 LET T3=T2+Y+1 1140 GOTO 1170 1150 LET T4=X(1) 1160 LET T3=X(NUM) 1170 PRINT 1175 PRINT "YOU HAVE A CHOICE OF AN ANNUAL SUMMARY (ANNUAL) OF THE" 1180 PRINT"MORTGAGE TABLE OR A MONTHLY (MONTHLY) TABLE. WHICH"; 1190 INPUT Y$ 1200 CHANGE Y$ TO K 1210 LET K(0)=3 1220 CHANGE K TO K$ 1230 IF K$<>"ANN" THEN 1260 1240 LET Z1 = 1 1250 GO TO 1310 1260 IF K$<>"MON" THEN 1290 1270 LET Z1 = 0 1280 GOTO 1310 1290 PRINT"YOUR SPELLING IS INCORRECT -- TRY AGAIN" 1300 GO TO 1150 1310 PRINT 1320 GO TO 1940 1330 PRINT 1340 IF K$="LIF" THEN 1370 1350 LET N = 12*Y+M 1360 IF K$="RAT" THEN 1510 1370 LET R1 = R/12 1380 IF K$="AMO" THEN 1450 1390 IF K$="MON" THEN 1480 1400 LET N = -(LOG(1-(A*R1)/P))/LOG(1+R1) 1410 LET N = INT(N)+1 1420 LET Y = INT(N/12) 1430 LET M = N-12*Y 1440 GO TO 1620 1450 LET A = (P*(1-1/((1+R1)^N)))/R1 1460 LET A=INT(A*100+.5)/100 1470 GO TO 1620 1480 LET P = (A*R1)/(1-1/((1+R1)^N)) 1490 LET P=INT(P*100+1)/100 1500 GO TO 1620 1510 LET R1 = 0 1520 FOR O = 1 TO 5 1530 FOR I = 1 TO 10 1540 LET Q = I*(1/(10^O))+R1 1550 LET C = (P*(1-1/((1+Q)^N)))/Q 1560 IF C < A THEN 1580 1570 NEXT I 1580 LET R1 = Q-(1/(10^O)) 1590 NEXT O 1600 LET R = R1*12 1610 LET R=INT(R*10000+.5)/10000 1620 PRINT 1630 IF 12*P > (R*A+1) THEN 1680 1640 PRINT "YOUR FIRST YEARS'S PAYMENTS ARE"12*P 1650 PRINT "THE FIRST YEARS'S INTEREST IS"R*A 1660 PRINT "THEREFORE, THE LIFE OF THE MORTGAGE IS UNDEFINED" 1670 STOP 1680 PRINT"---------------------------------------------------------------" 1690 PRINT 1700 PRINT " ","*** MORTGAGE TERMS ***" 1705 PRINT 1710 PRINT "ANNUAL INTEREST RATE (COMPOUNDED MONTHLY) =";R*100;"%" 1730 PRINT "LIFE OF MORTGAGE=";Y"YEARS";M"MONTHS" 1740 PRINT"AMOUNT BORROWED= "; 1750 LET A=FNP(27,A) 1760 PRINT 1770 PRINT"MONTHLY PAYMENT= "; 1780 LET P=FNP(27,P) 1790 PRINT 1800 PRINT "TOTAL INTEREST = "; 1810 LET B7=FNP(27,P*(12*Y+M)-A) 1820 PRINT 1830 PRINT 1840 PRINT 1850 IF Z = 2 THEN 1870 1860 GO TO 1890 1870 PRINT " ", "NOTE: THE MORTGAGE LIFE HAS BEEN ROUNDED " 1880 PRINT " ", "UPWARD TO THE NEAREST MONTH" 1890 PRINT 1900 PRINT"---------------------------------------------------------------" 1910 PRINT 1920 GO SUB 2910 1930 GO TO 1340 1940 PRINT " ","*** MORTGAGE TABLE ***" 1950 PRINT 1960 PRINT 1970 LET Z2 = 0 1980 LET S1 = 0 1990 LET S2 = 0 2000 IF T1 = 12 THEN 2030 2010 LET M2 = T1 2020 GO TO 2050 2030 LET T2 = T2+1 2040 LET M2 = 0 2050 LET M3 = M2+1 2060 IF Z1 = 1 THEN 2150 2070 PRINT " ", "BEGINNING" 2080 PRINT " ", "PRINCIPAL"," ","PRINCIPAL" 2090 PRINT "MONTH","OUTSTANDING","INTEREST","REPAYMENT" 2100 PRINT 2109 PRINT 2110 IF T2T3 THEN 2420 2350 PRINT G$(M2); 2360 LET A1=FNP(20,A1) 2380 LET I1=FNP(35,I1) 2400 LET P1=FNP(51,P1) 2410 PRINT 2420 IF M2 = 12 THEN 2450 2430 IF A > 0 THEN 2860 2440 LET Z2 = 1 2450 IF T2T3 THEN 2570 2470 PRINT 2480 PRINT"INTEREST PAID DURING THE YEAR= "; 2490 LET S1=FNP(37,S1) 2500 PRINT 2510 PRINT"PRINCIPAL REPAID DURING THE YEAR= "; 2520 LET S2=FNP(37,S2) 2530 PRINT 2540 PRINT"PRINCIPAL OUTSTANDING AT YEAR END= "; 2550 LET A=FNP(37,A) 2560 PRINT 2570 IF Z2 = 1 THEN 2870 2580 LET T2 = T2+1 2590 IF M1= 12* T3 THEN 2870 2600 IF T2T3 THEN 2830 2620 PRINT 2630 PRINT 2640 IF M1 = 12*T3 THEN 2870 2650 PRINT " ", "FOR THE CALENDAR YEAR"T2 2660 PRINT 2670 GO TO 2830 2680 IF M2 = 12 THEN 2710 2690 IF A > 0 THEN 2860 2700 LET Z2 = 1 2710 IF T2T3 THEN 2800 2730 PRINT T2; 2740 LET S1=FNP(20,S1) 2760 LET S2=FNP(37,S2) 2780 LET A=FNP(52,A) 2790 PRINT 2800 LET T2 = T2 + 1 2810 IF M1 = 12*T3 THEN 2870 2820 IF Z2 = 1 THEN 2870 2830 LET S1 = 0 2840 LET S2 = 0 2850 LET M2 = 0 2860 NEXT M1 2870 PRINT 2872 PRINT 2874 PRINT 2880 GOTO 3300 2890 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY 2900 DATA AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER 2910 PRINT 2920 PRINT"WOULD YOU LIKE TO CHANGE SOMETHING"; 2930 INPUT B1$ 2940 PRINT 2950 IF B1$ = "NO" THEN 810 2960 PRINT"WHAT WOULD YOU LIKE TO CHANGE"; 2970 INPUT B$ 2980 CHANGE B$ TO K 2990 LET K(0)=3 3000 CHANGE K TO K$ 3010 PRINT 3020 IF K$<>"LIF" THEN 3070 3030 PRINT"WHAT NEW VALUES DO YOU WANT: YEARS, MONTHS"; 3040 INPUT Y,M 3050 PRINT 3060 GO TO 3150 3070 PRINT"WHAT VALUE DO YOU WANT FOR ";B2$; 3080 INPUT B7 3090 PRINT 3100 IF K$<>"RAT" THEN 3130 3110 LET R=B7/100 3120 GO TO 3220 3130 IF K$<>"AMO" THEN 3160 3140 LET A=B7 3150 GO TO 3220 3160 IF K$<>"MON" THEN 3190 3170 LET P=B7 3180 GO TO 3220 3190 PRINT"YOUR INPUT DATA IS SPELLED INCORRECTLY---START OVER." 3200 PRINT 3210 GO TO 2960 3220 PRINT"THE PROGRAM CAN COMPUTE THE RATE, LIFE, AMOUNT BORROWED" 3230 PRINT"OR THE MONTHLY PAYMENT. WHICH DO YOU WANT"; 3240 INPUT Y$ 3250 CHANGE Y$ TO K 3260 LET K(0)=3 3270 CHANGE K TO K$ 3280 PRINT 3290 RETURN 3300 END