home *** CD-ROM | disk | FTP | other *** search
Wrap
10 REM ********************** 20 REM * REFINANCE * 30 REM * BY RAY BOEHM * 40 REM * COPYRIGHT (C) 1986 * 50 REM * BY MICROSPARC, INC * 60 REM * CONCORD, MA 01742 * 70 REM ********************** 80 REM PRINT INTRODUCTION 90 REM 100 TEXT : HOME : PRINT TAB( 15);"REFIANCE?": PRINT TAB( 14)"BY RAY BOEHM" 110 PRINT TAB( 4)"COPYRIGHT 1986 BY MICROSPARC, INC." 120 FOR X = 1 TO 39: PRINT "=";: NEXT 130 PRINT : PRINT : PRINT "THIS PROGRAM ANALYZES THE EFFECT OF RE-" 140 PRINT "FINANCING A FIXED-RATE MORTGAGE. ENTER": PRINT "THE FOLLOWING:": PRINT 150 PRINT " 1. AMOUNT OF THE ORIGINAL LOAN" 160 PRINT " 2. NUMBER OF MONTHLY PAYMENTS" 170 PRINT " 3. INTEREST RATE FOR BOTH LOANS " 180 PRINT " 4. DURATION OF BOTH LOANS (MONTHS)" 190 PRINT " 5. FIXED COST OF THE NEW LOAN " 200 PRINT " 6. POINTS TO OBTAIN THE NEW LOAN" 210 PRINT " 7. RATE AT WHICH MONEY SAVED" 220 PRINT " WOULD BE REINVESTED": REM 7 SPACES 230 PRINT : PRINT "THE PROGRAM WILL PRINT OUT A COMPARISON": PRINT "OF BOTH LOANS, AND THE NUMBER OF MONTHS": PRINT "REQUIRED TO RECOVER REFINANCING COSTS." 240 PRINT : INVERSE : HTAB 8: PRINT "PRESS <RETURN> TO CONTINUE";: NORMAL : GET CH$ 250 REM INPUT PARAMETERS 260 HOME : PRINT TAB( 12);"REFINANCE PROGRAM" 270 VTAB 22: PRINT "ENTER DATA, OR PRESS <RETURN> TO ACCEPT": PRINT "<ESC> QUITS THE PROGRAM"; 280 VV = 3:QB$ = T$:QQ$ = "TITLE:": GOSUB 750:T$ = QB$ 290 VTAB 5: HTAB 12: INVERSE : PRINT "OLD LOAN": NORMAL 300 VV = 7:QB$ = STR$(L1):QQ$ = " AMOUNT:": GOSUB 750:L1 = VAL(QB$):A9 = L1: REM 10 SPACES 310 IF A9 <1 THEN PRINT CHR$(7);: GOTO 300 320 VV = 8:QB$ = STR$(L2):QQ$ = " RATE:": GOSUB 750:L2 = VAL(QB$):R1 = L2: REM 12 SPACES 330 IF R1 >30 OR R1 <1 THEN PRINT CHR$(7);: GOTO 320 340 VV = 9:QB$ = STR$(L3):QQ$ = " DURATION:": GOSUB 750:L3 = VAL(QB$):D1 = L3: REM 8 SPACES 350 IF D1 <1 THEN PRINT CHR$(7);: GOTO 340 360 VV = 10:QB$ = STR$(L4):QQ$ = " PAYMENTS MADE:": GOSUB 750:L4 = VAL(QB$):M1 = L4 370 IF M1 >D1 THEN PRINT CHR$(7);: GOTO 360 380 VTAB 12: HTAB 12: INVERSE : PRINT "NEW LOAN": NORMAL 390 VV = 14:QB$ = STR$(L5):QQ$ = " RATE:": GOSUB 750:L5 = VAL(QB$):R2 = L5: REM 13 SPACES 400 IF R2 >30 OR R2 <1 THEN PRINT CHR$(7);: GOTO 390 410 VV = 15:QB$ = STR$(L6):QQ$ = " DURATION:": GOSUB 750:L6 = VAL(QB$):D2 = L6: REM 8 SPACES 420 IF D2 <1 THEN PRINT CHR$(7);: GOTO 410 430 VV = 16:QB$ = STR$(L7):QQ$ = " FIXED COST:": GOSUB 750:L7 = VAL(QB$):F2 = L7: REM 6 SPACES 440 VV = 17:QB$ = STR$(L8):QQ$ = " POINTS:": GOSUB 750:L8 = VAL(QB$):V2 = L8: REM 10 SPACES 450 IF V2 >30 THEN PRINT CHR$(7);: GOTO 440 460 VV = 18:QB$ = STR$(L9):QQ$ = "REINVESTMENT RATE:": GOSUB 750:L9 = VAL(QB$):R3 = L9 470 IF R3 >30 THEN PRINT CHR$(7);: GOTO 460 480 VTAB 20: HTAB 8: PRINT "OK? (Y/N): ";: GET CH$: IF CH$ < >"Y" AND CH$ < > CHR$(121) THEN GOTO 280 490 CALL -958 500 HTAB 1: VTAB 20: FLASH : PRINT "CALCULATIONS PROCEEDING...": NORMAL 510 REM CALCULATE MODEL 520 DEF FN M(X) = 1 +X/100/12 530 R9 = R1:D9 = D1: GOSUB 720:P1 = P9:N1 = D1 -M1:A1 = A9: FOR I = 1 TO M1:A1 = A1 * FN M(R1) -P1: NEXT I 540 N2 = D2:A2 = A1 +F2 +((A1 +F2) *V2/100):A9 = A2:R9 = R2:D9 = D2: GOSUB 720:P2 = P9 550 T1 = D1 *P1:T2 = D2 *P2 560 B = 0:C1 = A1:C2 = A2:S2 = 0 570 B = B +1 580 S2 = S2 * FN M(R3) +P1 -P2: IF C1 <C2 -S2 AND B <D2 THEN 570 590 REM PRINT REPORT 600 HOME : PRINT : PRINT TAB( (40 - LEN(T$))/2 +1);T$:: PRINT : PRINT : PRINT "APPROXIMATIONS","OLD LOAN"; TAB( 33);"NEW LOAN" 610 PRINT "PAY OFF/TOT AMT", INT(A1 +.5), INT(A2 +.5) 620 PRINT "RATE",R1,R2 630 PRINT "PAYMENT AMT", INT(P1 +.5), INT(P2 +.5) 640 PRINT "PAYMENTS LEFT",N1,N2 650 PRINT "PAYMENTS TOTAL", INT(T1 +.5), INT(T2 +.5): PRINT 660 PRINT : PRINT : PRINT TAB( 12);"BREAK-EVEN ANALYSIS" 670 PRINT : PRINT : PRINT "ASSUMED REINVESTMENT RATE: ";R3 680 PRINT : PRINT "BREAK-EVEN TIME (IN MONTHS): ";: IF T2 >T1 THEN PRINT "NEVER": GOTO 700 690 PRINT B 700 PRINT : PRINT "PRESS <RETURN> TO CONTINUE,<ESC> TO QUIT": GET CH$: IF CH$ < > CHR$(27) GOTO 260 710 HOME : END 720 REM FIND MONTHLY PAYMENT 730 P9 = (R9/1200) *A9 *(1 +R9/1200) ^D9/((1 +R9/1200) ^D9 -1) 740 RETURN 750 REM INPUT SUBROUTINE 760 HH = LEN(QQ$) +2: HTAB 1: VTAB VV 770 PRINT QQ$; 780 HTAB HH: PRINT QB$;: HTAB HH 790 GET QA$: PRINT QA$;: IF QA$ = CHR$(27) THEN HOME : END 800 IF ASC(QA$) <32 AND QA$ < > CHR$(13) THEN PRINT CHR$(7);: GOTO 760 810 IF QA$ = CHR$(13) THEN RETURN 820 QB$ = QA$: CALL -868 830 GET QA$: PRINT QA$; 840 IF QA$ = CHR$(13) THEN GOTO 890 850 IF QA$ = CHR$(8) THEN GOSUB 900: GOTO 830 860 IF QA$ = CHR$(27) THEN HOME : END 870 IF ASC(QA$) <32 THEN VTAB VV: GOTO 830 880 QB$ = QB$ +QA$: GOTO 830 890 RETURN 900 IF QB$ = "" THEN CALL -1036: RETURN 910 IF LEN(QB$) >1 THEN QB$ = LEFT$(QB$, LEN(QB$) -1): PRINT " ";: CALL -1008: RETURN 920 QB$ = "": PRINT " ";: CALL -1008: RETURN