1 REM **** HP BASIC PROGRAM LIBRARY ******************************* 2 REM 3 REM MCOST: COMPARES AND EVALUATES UP TO 1000 MORTGAGE 4 REM PAYMENT PLANS SIMULTANEOUSLY 5 REM 36709 REV A 10/73 6 REM 7 REM **** CONTRIBUTED PROGRAM ************************************ 8999 REM-MCOST-11/24/69-RICHARDSON-PROGRAM 9000 PRINT "TYPE 'RUN-9100' FOR INSTRUCTIONS" 9001 PRINT 9099 GOTO 9200 9100 PRINT " '$MCOST' PERMITS THE USER TO EASILY COMPARE AND EVALUATE" 9105 PRINT "UP TO 1000 MORTGAGE PAYMENT PLANS SIMULTANEOUSLY." 9110 PRINT " THE PROGRAM COMPUTES MONTHLY MORTGAGE PAYMENTS FOR" 9115 PRINT "VARIOUS PRINCIPAL AMOUNTS, AT DIFFERENT INTEREST RATES," 9120 PRINT "OVER VARYING PERIODS." 9130 PRINT " SAMPLE INPUT:" 9135 PRINT " ENTER THE AMOUNTS? 22000,24000" 9140 PRINT " ENTER THE RATES (PERCENT)? 7.5" 9145 PRINT " ENTER THE YEARS? 20,25" 9150 PRINT "FROM THE ABOVE INPUT, 4 MORTGAGE PAYMENT PLANS WILL BE" 9155 PRINT "CALCULATED AND PRINTED WITH SUPPLEMENTARY COMPARISON" 9160 PRINT "INFORMATION." 9165 PRINT 9200 DEF FNA(X)=INT((X*1000+5)/10)/100 9235 DIM A[36],R[36],T[36] 9250 PRINT '10"ENTER THE AMOUNTS"; 9255 GOSUB 9610 9260 LET A2=Z4 9265 GOSUB 9820 9270 MAT A=X 9275 PRINT "ENTER THE RATES(PERCENT)"; 9280 GOSUB 9610 9285 LET R2=Z4 9290 GOSUB 9820 9295 MAT R=X 9300 PRINT "ENTER THE YEARS"; 9305 GOSUB 9610 9310 LET T2=Z4 9315 GOSUB 9820 9320 MAT T=X 9325 PRINT '10'10 9330 PRINT TAB(11);"NUMBER"; 9335 PRINT TAB(48);"DECREASE"; 9340 PRINT TAB(61);"INCREASE" 9345 PRINT "INTEREST"; 9350 PRINT TAB(13);"OF"; 9355 PRINT TAB(22);"MONTHLY"; 9360 PRINT TAB(35);"TOTAL"; 9365 PRINT TAB(48);"MONTHLY"; 9370 PRINT TAB(61);"TOTAL" 9375 PRINT " RATE"; 9380 PRINT TAB(11);"YEARS"; 9385 PRINT TAB(22);"PAYMENT"; 9390 PRINT TAB(35);"INTEREST"; 9395 PRINT TAB(48);"PAYMENT"; 9400 PRINT TAB(61);"INTEREST" 9405 GOSUB 9805 9410 FOR A1=1 TO A2 9415 PRINT '10'10"AMOUNT = ";FNA(A[A1]) 9420 PRINT "------"'10 9425 FOR R1=1 TO R2 9430 LET R5=P1=0 9435 FOR T1=1 TO T2 9440 LET C9=2 9445 LET X9=R[R1] 9450 GOSUB 9870 9455 LET C9=15 9460 LET X9=T[T1] 9465 GOSUB 9870 9470 LET N=12*T[T1] 9475 LET R3=R[R1]/1200 9480 LET P=(A[A1]*R3)/(1-1/((1+R3)^N)) 9485 LET R4=P*N-A[A1] 9490 LET C9=25 9495 LET X9=P 9500 GOSUB 9870 9505 LET C9=40 9510 LET X9=R4 9515 GOSUB 9870 9520 IF P1=0 THEN 9540 9525 LET C9=51 9530 LET X9=P1-P 9535 GOSUB 9870 9540 IF R5=0 THEN 9560 9545 LET X9=R4-R5 9550 LET C9=66 9555 GOSUB 9870 9560 PRINT 9565 LET R5=R4 9570 LET P1=P 9575 NEXT T1 9580 PRINT 9585 NEXT R1 9590 GOSUB 9805 9595 NEXT A1 9600 PRINT '10'10'10'10'10'10'10'10 9605 STOP 9610 REM EVALUATE A NUMERICAL STRING 9615 REM THE ROUTINE WILL INPUT A STRING USING A$, AND WILL RETURN 9620 REM THE NUMERICAL VALUES IN ARRAY X. THE VARIABLE Z4 WIL 9625 REM HOLD THE LENGTH OF THE ARRAY. 9630 REM THE ROUTINE USES THE STRINGS A$ AND N$; AND THE ARRAYS 9635 REM X AND Y; AND THE VARIABLES Z1, Z2, Z3, Z4 9640 DIM A$[72],N$[14],X[36],Y[36] 9645 LET N$="0123456789., "'3 9650 MAT X=ZER 9655 MAT Y=ZER 9660 INPUT A$ 9665 LET Z4=1 9670 LET Z2=0 9675 FOR Z3=1 TO LEN(A$) 9680 FOR Z1=1 TO 14 9685 IF A$[Z3,Z3]=N$[Z1,Z1] THEN 9705 9690 NEXT Z1 9695 PRINT "NON-NUMERIC INPUT - TRY AGAIN"; 9700 GOTO 9650 9705 IF Z1 <= 10 THEN 9720 9710 GOTO Z1-10 OF 9795,9735,9730 9715 STOP 9720 IF Z2 <> 0 THEN 9790 9725 LET X[Z4]=X[Z4]*10+(Z1-1) 9730 NEXT Z3 9735 IF Z2=0 THEN 9745 9740 LET X[Z4]=X[Z4]+Y[Z4]*10^(1-Z2) 9745 LET X[Z4+1]=0 9750 IF Z1 <> 12 THEN 9775 9755 LET Z1=0 9760 LET Z4=Z4+1 9765 LET Z2=0 9770 GOTO 9730 9775 IF Z1 <> 0 THEN 9785 9780 LET Z4=Z4-1 9785 RETURN 9790 LET Y[Z4]=Y[Z4]*10+(Z1-1) 9795 LET Z2=Z2+1 9800 GOTO 9730 9805 PRINT "---------------------------------------------------"; 9810 PRINT "------------------" 9815 RETURN 9820 LET S1=0 9825 FOR S=1 TO 36 9830 IF X[S+1]=0 THEN 9860 9835 IF X[S] <= X[S+1] THEN 9855 9840 LET S1=X[S] 9845 LET X[S]=X[S+1] 9850 LET X[S+1]=S1 9855 NEXT S 9860 IF S1 <> 0 THEN 9820 9865 RETURN 9870 LET T9=C9-2 9875 IF ABS(X9)<1 THEN 9885 9880 LET T9=T9-INT((LOG(ABS(X9))+5.E-07)/LOG(10)) 9885 PRINT TAB(T9);FNA(X9); 9890 RETURN 9999 END