home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib28a.dsk / JUNE.1986 / REFINANCE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  92 lines

  1. 10  REM  **********************
  2. 20  REM  * REFINANCE          *
  3. 30  REM  * BY RAY BOEHM       *
  4. 40  REM  * COPYRIGHT (C) 1986 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  REM  PRINT INTRODUCTION
  9. 90  REM 
  10. 100  TEXT : HOME : PRINT  TAB( 15);"REFIANCE?": PRINT  TAB( 14)"BY RAY BOEHM"
  11. 110  PRINT  TAB( 4)"COPYRIGHT 1986 BY MICROSPARC, INC."
  12. 120  FOR X = 1 TO 39: PRINT "=";: NEXT 
  13. 130  PRINT : PRINT : PRINT "THIS PROGRAM ANALYZES THE EFFECT OF RE-"
  14. 140  PRINT "FINANCING A FIXED-RATE MORTGAGE. ENTER": PRINT "THE FOLLOWING:": PRINT 
  15. 150  PRINT "   1. AMOUNT OF THE ORIGINAL LOAN"
  16. 160  PRINT "   2. NUMBER OF MONTHLY PAYMENTS"
  17. 170  PRINT "   3. INTEREST RATE FOR BOTH LOANS "
  18. 180  PRINT "   4. DURATION OF BOTH LOANS (MONTHS)"
  19. 190  PRINT "   5. FIXED COST OF THE NEW LOAN "
  20. 200  PRINT "   6. POINTS TO OBTAIN THE NEW LOAN"
  21. 210  PRINT "   7. RATE AT WHICH MONEY SAVED"
  22. 220  PRINT "       WOULD BE REINVESTED": REM  7 SPACES
  23. 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."
  24. 240  PRINT : INVERSE : HTAB 8: PRINT "PRESS <RETURN> TO CONTINUE";: NORMAL : GET CH$
  25. 250  REM  INPUT PARAMETERS
  26. 260  HOME : PRINT  TAB( 12);"REFINANCE PROGRAM"
  27. 270  VTAB 22: PRINT "ENTER DATA, OR PRESS <RETURN> TO ACCEPT": PRINT "<ESC> QUITS THE PROGRAM";
  28. 280 VV = 3:QB$ = T$:QQ$ = "TITLE:": GOSUB 750:T$ = QB$
  29. 290  VTAB 5: HTAB 12: INVERSE : PRINT "OLD LOAN": NORMAL 
  30. 300 VV = 7:QB$ =  STR$(L1):QQ$ = "          AMOUNT:": GOSUB 750:L1 =  VAL(QB$):A9 = L1: REM  10 SPACES
  31. 310  IF A9 <1  THEN  PRINT  CHR$(7);: GOTO 300
  32. 320 VV = 8:QB$ =  STR$(L2):QQ$ = "            RATE:": GOSUB 750:L2 =  VAL(QB$):R1 = L2: REM  12 SPACES
  33. 330  IF R1 >30  OR R1 <1  THEN  PRINT  CHR$(7);: GOTO 320
  34. 340 VV = 9:QB$ =  STR$(L3):QQ$ = "        DURATION:": GOSUB 750:L3 =  VAL(QB$):D1 = L3: REM  8 SPACES
  35. 350  IF D1 <1  THEN  PRINT  CHR$(7);: GOTO 340
  36. 360 VV = 10:QB$ =  STR$(L4):QQ$ = "   PAYMENTS MADE:": GOSUB 750:L4 =  VAL(QB$):M1 = L4
  37. 370  IF M1 >D1  THEN  PRINT  CHR$(7);: GOTO 360
  38. 380  VTAB 12: HTAB 12: INVERSE : PRINT "NEW LOAN": NORMAL 
  39. 390 VV = 14:QB$ =  STR$(L5):QQ$ = "             RATE:": GOSUB 750:L5 =  VAL(QB$):R2 = L5: REM  13 SPACES
  40. 400  IF R2 >30  OR R2 <1  THEN  PRINT  CHR$(7);: GOTO 390
  41. 410 VV = 15:QB$ =  STR$(L6):QQ$ = "        DURATION:": GOSUB 750:L6 =  VAL(QB$):D2 = L6: REM  8 SPACES
  42. 420  IF D2 <1  THEN  PRINT  CHR$(7);: GOTO 410
  43. 430 VV = 16:QB$ =  STR$(L7):QQ$ = "      FIXED COST:": GOSUB 750:L7 =  VAL(QB$):F2 = L7: REM  6 SPACES
  44. 440 VV = 17:QB$ =  STR$(L8):QQ$ = "          POINTS:": GOSUB 750:L8 =  VAL(QB$):V2 = L8: REM  10 SPACES
  45. 450  IF V2 >30  THEN  PRINT  CHR$(7);: GOTO 440
  46. 460 VV = 18:QB$ =  STR$(L9):QQ$ = "REINVESTMENT RATE:": GOSUB 750:L9 =  VAL(QB$):R3 = L9
  47. 470  IF R3 >30  THEN  PRINT  CHR$(7);: GOTO 460
  48. 480  VTAB 20: HTAB 8: PRINT "OK? (Y/N): ";: GET CH$: IF CH$ < >"Y"  AND CH$ < > CHR$(121)  THEN  GOTO 280
  49. 490  CALL  -958
  50. 500  HTAB 1: VTAB 20: FLASH : PRINT "CALCULATIONS PROCEEDING...": NORMAL 
  51. 510  REM  CALCULATE MODEL
  52. 520  DEF  FN M(X) = 1 +X/100/12
  53. 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
  54. 540 N2 = D2:A2 = A1 +F2 +((A1 +F2) *V2/100):A9 = A2:R9 = R2:D9 = D2: GOSUB 720:P2 = P9
  55. 550 T1 = D1 *P1:T2 = D2 *P2
  56. 560 B = 0:C1 = A1:C2 = A2:S2 = 0
  57. 570 B = B +1
  58. 580 S2 = S2 * FN M(R3) +P1 -P2: IF C1 <C2 -S2  AND B <D2  THEN 570
  59. 590  REM  PRINT REPORT
  60. 600  HOME : PRINT : PRINT  TAB( (40 - LEN(T$))/2 +1);T$:: PRINT : PRINT : PRINT "APPROXIMATIONS","OLD LOAN"; TAB( 33);"NEW LOAN"
  61. 610  PRINT "PAY OFF/TOT AMT", INT(A1 +.5), INT(A2 +.5)
  62. 620  PRINT "RATE",R1,R2
  63. 630  PRINT "PAYMENT AMT", INT(P1 +.5), INT(P2 +.5)
  64. 640  PRINT "PAYMENTS LEFT",N1,N2
  65. 650  PRINT "PAYMENTS TOTAL", INT(T1 +.5), INT(T2 +.5): PRINT 
  66. 660  PRINT : PRINT : PRINT  TAB( 12);"BREAK-EVEN ANALYSIS"
  67. 670  PRINT : PRINT : PRINT "ASSUMED REINVESTMENT RATE:  ";R3
  68. 680  PRINT : PRINT "BREAK-EVEN TIME (IN MONTHS):  ";: IF T2 >T1  THEN  PRINT "NEVER": GOTO 700
  69. 690  PRINT B
  70. 700  PRINT : PRINT "PRESS <RETURN> TO CONTINUE,<ESC> TO QUIT": GET CH$: IF CH$ < > CHR$(27) GOTO 260
  71. 710  HOME : END 
  72. 720  REM  FIND MONTHLY PAYMENT
  73. 730 P9 = (R9/1200) *A9 *(1 +R9/1200) ^D9/((1 +R9/1200) ^D9 -1)
  74. 740  RETURN 
  75. 750  REM  INPUT SUBROUTINE
  76. 760 HH =  LEN(QQ$) +2: HTAB 1: VTAB VV
  77. 770  PRINT QQ$;
  78. 780  HTAB HH: PRINT QB$;: HTAB HH
  79. 790  GET QA$: PRINT QA$;: IF QA$ =  CHR$(27)  THEN  HOME : END 
  80. 800  IF  ASC(QA$) <32  AND QA$ < > CHR$(13)  THEN  PRINT  CHR$(7);: GOTO 760
  81. 810  IF QA$ =  CHR$(13)  THEN  RETURN 
  82. 820 QB$ = QA$: CALL  -868
  83. 830  GET QA$: PRINT QA$;
  84. 840  IF QA$ =  CHR$(13)  THEN  GOTO 890
  85. 850  IF QA$ =  CHR$(8)  THEN  GOSUB 900: GOTO 830
  86. 860  IF QA$ =  CHR$(27)  THEN  HOME : END 
  87. 870  IF  ASC(QA$) <32  THEN  VTAB VV: GOTO 830
  88. 880 QB$ = QB$ +QA$: GOTO 830
  89. 890  RETURN 
  90. 900  IF QB$ = ""  THEN  CALL  -1036: RETURN 
  91. 910  IF  LEN(QB$) >1  THEN QB$ =  LEFT$(QB$, LEN(QB$) -1): PRINT " ";: CALL  -1008: RETURN 
  92. 920 QB$ = "": PRINT " ";: CALL  -1008: RETURN