home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / R.E.ADVISOR.bas < prev    next >
BASIC Source File  |  2023-02-26  |  26KB  |  372 lines

  1. 10  REM   *************************
  2. 20  REM   * R.E.ADVISOR           *
  3. 30  REM   * BY ROBERT A. ALBANITO *
  4. 40  REM   * COPYRIGHT (C) 1990    *
  5. 50  REM   * MINDCRAFT PUBL. CORP. *
  6. 60  REM   * CONCORD, MA 01742     *
  7. 70  REM   *************************
  8. 80  REM 
  9. 90 D$ =  CHR$(4): PRINT : PRINT D$"PR#3": PRINT : GOTO 2470
  10. 100  REM 
  11. 110  REM  LINEUP AMOUNTS IN COLUMNS
  12. 120  REM 
  13. 130 A$ = "": IF Z = 4  OR Z = 13  OR Z = 18  OR Z = 26  THEN A$ =  STR$(W): GOSUB 200: RETURN 
  14. 140  IF Z = 12  AND W = 1  THEN A$ = "SINGLE": GOTO 200
  15. 150  IF Z = 12  AND W = 2  THEN A$ = "MARRIED": GOTO 200
  16. 160 A$ =  STR$( INT((W) *100 +.5)/100): IF W <1  AND W >0  THEN 200
  17. 170 A$ = A$ + RIGHT$(".00 ",4 + LEN( STR$( INT(W))) - LEN(A$))
  18. 180 A$ =  LEFT$(A$, LEN(A$) -1)
  19. 190  IF W < =  -1000  OR W > = 1000  THEN A$ =  LEFT$(A$, LEN(A$) -6) +"," + RIGHT$(A$,6): REM  ADD COMMA IF IN THOUSANDS
  20. 200  POKE 36,G - LEN(A$): PRINT A$;: RETURN 
  21. 210  REM 
  22. 220  REM  CALCULATE MONTHLY PAYMENT
  23. 230  REM 
  24. 240 L = A(2): REM  LOAN AMOUNT
  25. 250 IR = A(3)/1200: REM  MONTHLY INTEREST RATE
  26. 260 Y = A(4): REM  # YEARS
  27. 270 BM = A(18): REM  BEGINNING MONTH
  28. 280 M = Y *12: REM  # OF MONTHS
  29. 290 U = (1 +IR) ^M
  30. 300 MI = L *IR: REM  MONTHLY INTEREST
  31. 310 MP = MI *U/(U -1): REM  MONTHLY PAYMENT
  32. 320 YR = A(26):CT = 0: RETURN 
  33. 330  REM 
  34. 340  REM  PROGRAM CALCULATIONS
  35. 350  REM 
  36. 360 CT = CT +1:TP = 0:I = 0
  37. 370 TY = (13 -BM) *MP: IF M <12  THEN TY = M *MP: REM  TOT YEAR PMT
  38. 380  FOR AA = BM TO 12:MI = L *IR:P = (MP -MI):TP = TP +P:I = I +MI:L = L -P:M = M -1: IF M >0  THEN  NEXT :AA = 0:BM = 1: REM  I = TOTAL INT. TP= TOTAL PRINCIPAL
  39. 390  IF MM = 4  THEN  RETURN 
  40. 400 TI = 0:EI = 0:TD = 0:AG = 0:A = 0:EW = 0:ET = 0:FR = 0:TR = 0:AM = 0
  41. 410 TI = A(14) +A(15): IF MM = 2  AND T$ = "Y"  AND DI >A(15)  THEN TI = TI +DI -A(15): REM  TOTAL INCOME/DI=INT.ON INVESTED DOWN PAYMENT/T$=TAXABLE OR NON TAXABLE
  42. 420 EI = A(9): IF EI >0  THEN  GOSUB 690: IF EI <0  THEN EI = 0: REM  CALCULATE I.R.A.
  43. 430 PT = 0: IF CT >1  THEN PT = A(5): REM  PROPERTY TAX
  44. 440 PS = 0:CC = 0: IF CT = 1  THEN PS = (A(7)/100) *A(2):CC = A(8): REM  POINTS/CLOSING COSTS
  45. 450 PE = A(13) *2000: REM  PERSONAL EXEMPTIONS
  46. 460 SI = (A(17)/100) *A(14): REM  STATE INCOME TAX
  47. 470 CH = A(10): REM  CHARITIES
  48. 480 PI = 0: IF YR <1991  THEN PI = .1 *A(11): IF YR <1990  THEN PI = .2 *A(11)
  49. 490 YR = YR +1
  50. 500 TD = I +EI +PS +CC +PE +SI +CH +PI +PT +A(6): REM  TOTAL DED
  51. 510 AG = TI -TD: REM  ADJUSTED GROSS INCOME
  52. 520  REM 
  53. 530  REM  CALCULATE F.I.T.W. & FEDERAL TAXES
  54. 540  REM 
  55. 550 EW = A(16): IF EW >0  AND EW <500  THEN EW = EW *52: GOTO 580: REM  CALCULATE YEARLY FITW FROM WEEKLY AMOUNT
  56. 560  IF EW = 0  AND A(12) = 1  THEN A = TI -(EI +PE +3100):EW = (.15 *A): IF A >17850  THEN EW = (.15 *17850) +(.28 *(A -17850)): REM  ESTIMATE SINGLE FITW
  57. 570  IF EW = 0  AND A(12) = 2  THEN A = TI -(EI +PE +5200):EW = (.15 *A): IF A >29750  THEN EW = (.15 *29750) +(.28 *(A -29750)): REM  ESTIMATE MARRIED FITW
  58. 580 ET = (.15 *AG): IF A(12) = 2  AND AG > = 29750  THEN ET = (.15 *29750) +(.28 *(AG -29750)): REM  ESTIMATED MARRIED FEDERAL TAXES
  59. 590  IF A(12) = 1  AND AG > = 17850  THEN ET = (.15 *17850) +(.28 *(AG -17850)): REM  ESTIMATED SINGLE FEDERAL TAXES
  60. 600 ES = ((TI -EI) -(A(13) *1000)) *(A(17)/100): REM  ESTIMATED STATE INCOME TAX
  61. 610 FR = EW -ET: REM  ESTIMATED FEDERAL REFUND
  62. 620 SR = SI -ES: REM  STATE TAX REFUND
  63. 630 TR = FR +SR: REM  TOTAL TAX REFUND
  64. 640 AM = (TY -TR)/(13 -BM): IF AM >MP  THEN AM = MP: REM  ADJUSTED MORTGAGE PAYMENT
  65. 650  RETURN 
  66. 660  REM 
  67. 670  REM  I.R.A. CALCULATIONS
  68. 680  REM 
  69. 690  IF A(12) = 1  AND TI >25000  THEN EI = (35000 -TI) *(A(9)/10000): REM  SINGLE I.R.A.
  70. 700  IF A(12) = 2  AND TI >40000  THEN EI = (50000 -TI) *(A(9)/10000): REM  MARRIED I.R.A.
  71. 710  IF  INT(EI)/10 - INT(EI/10) >0  THEN EI =  INT(EI/10) *10 +10: REM  ROUND UP TO NEAREST TEN
  72. 720  RETURN 
  73. 730  REM 
  74. 740  REM  PRINTOUT MENU
  75. 750  REM 
  76. 760 F$ = "PRINTOUT MENU":A1 = 13:A2 = 14:CC =  -3:LC = 33: GOSUB 2690:X = X -12:G$ = "S": IF X = 2  THEN G$ = "P"
  77. 770  HOME : IF G$ = "P"  THEN  PRINT  CHR$(21): VTAB 12: POKE 36,16: PRINT "PRINTING": PRINT  CHR$(4)"PR#1": PRINT  CHR$(9);"80N": RETURN 
  78. 780  RETURN 
  79. 790  FOR X = 1 TO 79: PRINT "-";: NEXT : PRINT : RETURN 
  80. 800  IF G$ = "S"  THEN  IF C = 8  THEN C = 0: GOSUB 1020: IF  ASC(H$) = 27  THEN 2620
  81. 810  RETURN 
  82. 820  REM 
  83. 830  REM  ITEMIZED 5 YEAR REPORT
  84. 840  REM 
  85. 850  GOSUB 760:VT = 14: IF G$ = "S"  THEN  VTAB 12: HTAB 33: PRINT "ANALYZING DATA"
  86. 860  GOSUB 240
  87. 870  FOR X = 1 TO 5: GOSUB 360
  88. 880 MC = (A(6) +A(5))/12: REM  ADDITIONAL MONTHLY COST
  89. 890 B(1,X) = MP:B(2,X) = MC:B(3,X) = MP +MC:B(4,X) = TP:B(5,X) = L:B(6,X) = I:B(7,X) = PT:B(8,X) = EI:B(9,X) = A(6):B(10,X) = PS:B(11,X) = CC:B(12,X) = SI:B(13,X) = A(10):B(14,X) = PI:B(15,X) = PE:B(16,X) = TD
  90. 900 B(17,X) = A(14):B(18,X) = A(15):B(19,X) = TI:B(20,X) = AG:B(21,X) = EW:B(22,X) = ET:B(23,X) = FR:B(24,X) = SI:B(25,X) = ES:B(26,X) = SI -ES:B(27,X) = TR:B(28,X) = AM:B(29,X) = AM +MC: NEXT 
  91. 910  IF G$ = "S"  THEN  HOME 
  92. 920  POKE 36,28: PRINT "ITEMIZED FIVE YEAR REPORT": PRINT : PRINT 
  93. 930 T = 0:C(1) = A(1) -A(2):C(2) = A(5):C(3) = (A(7)/100) *A(2):C(4) = A(8)
  94. 940 C$(1) = "DOWN PAYMENT":C$(2) = "PROPERTY TAXES":C$(3) = "MORTGAGE COST (POINTS)":C$(4) = "CLOSING COSTS"
  95. 950  FOR X = 1 TO 4: POKE 36,0: PRINT A$(X);:W = A(X):G = 37: GOSUB 160: POKE 36,42: PRINT C$(X);:C$(X) = "":W = C(X):G = 78: GOSUB 160:T = T +W: PRINT : NEXT 
  96. 960  POKE 36,69: PRINT "---------": POKE 36,42: PRINT "TOTAL NEEDED TO PURCHASE";:W = T: GOSUB 160: PRINT : PRINT : PRINT : PRINT 
  97. 970 A = A(26):G = 30: FOR X = 1 TO 5: POKE 36,G: PRINT A;:A = A +1:G = G +11: NEXT : PRINT : PRINT :A = 0:G = 0
  98. 980  FOR Y = 1 TO 28:C = C +1: POKE 36,0: PRINT B$(Y);:G = 23: FOR X = 1 TO 5:G = G +11:W = B(Y,X):B(Y,X) = 0: GOSUB 160: NEXT X
  99. 990  GOSUB 800
  100. 1000  PRINT : NEXT Y
  101. 1010 C = 0: GOTO 2590
  102. 1020  VTAB 24: POKE 36,20: PRINT "PRESS ANY KEY TO CONTINUE...<ESC> TO EXIT";: GET H$: POKE 49168,0: IF  ASC(H$) = 27  THEN  RETURN 
  103. 1030  VTAB 23: PRINT : VTAB VT: POKE 36,0: CALL  -958: RETURN 
  104. 1040  REM 
  105. 1050  REM  OWN VS RENT ANALYSIS
  106. 1060  REM 
  107. 1070  GOSUB 760: FOR X = 1 TO 4:E$(X) = A$(X):E(X) = A(X): NEXT :E$(5) = A$(24):E(5) = A(24)
  108. 1080  FOR X = 6 TO 10:E$(X) = A$(X +14):E(X) = A(X +14): NEXT 
  109. 1090 E$(11) = "TOTAL NEEDED TO PURCHASE":DP = (A(1) -A(2)) +(A(7)/100) *A(2) +A(5) +A(8):E(11) = DP
  110. 1100 E$(12) = A$(25):E(12) = A(25)
  111. 1110  GOTO 1120
  112. 1120 AA$ = "OWNERSHIP ANALYSIS": GOSUB 1860
  113. 1130  PRINT "        OTHER COST     PROP. TAXES     MORTGAGE       LOST INT.         ACTUAL": REM  SPACES 8/5/1/5/7/9
  114. 1140  PRINT "YR.     & MORT.INS     W/INFLATION     PAYMENTS      ON SAVINGS       HOME COST": REM  SPACES 5/1/5/5/6/1/7
  115. 1150  GOSUB 790:C = 0:AC = 0: GOSUB 240:BM = 1
  116. 1160 C = C +1:CT = CT +1
  117. 1170 AC = ((A(25)/100) *AC) +AC: IF AC = 0  THEN AC = A(19): REM  INFLATION OF OTHER COSTS
  118. 1180 PR = ((A(25)/100) *PR) +PR: IF PR = 0  THEN PR = A(5): REM  INFLATION OF PROPERTY TAX
  119. 1190 MH = ((A(25)/100) *MH) +MH: IF MH = 0  THEN MH = A(6): REM  INFLATION OF MORTGAGE INSURANCE
  120. 1200 DI = (DP +SA) *(A(24)/100):SA = SA +DI: REM  INTEREST YIELD OF DOWN PAYMENT
  121. 1210  POKE 36,2 - LEN( STR$(CT)): PRINT CT;
  122. 1220 G = 17:W = AC +MH:C(1) = C(1) +W: GOSUB 160:G = 32:W = PR:C(2) = C(2) +W: GOSUB 160:G = 47:W = MP *12:C(3) = C(3) +W: GOSUB 160:
  123. 1230 G = 63:W = DI:C(4) = C(4) +W: GOSUB 160:G = 79:W = AC +PR +MH +DI +(MP *12):TH(CT) = W:C(5) = C(5) +W: GOSUB 160: PRINT 
  124. 1240 VT = 15: GOSUB 800
  125. 1250  IF CT <A(4)  THEN 1160
  126. 1260  GOSUB 790
  127. 1270 G = 17:W = C(1): GOSUB 160:G = 32:W = C(2): GOSUB 160:G = 47:W = C(3): GOSUB 160:G = 63:W = C(4): GOSUB 160:G = 79:W = C(5): GOSUB 160: PRINT 
  128. 1280 CT = 0:AC = 0:PR = 0:MH = 0:DI = 0:SA = 0
  129. 1290  IF G$ = "P"  THEN  PRINT  CHR$(12): GOSUB 1860
  130. 1300 VT = 12:C = 8: GOSUB 800
  131. 1310  PRINT "      EST.TAX                NET  COST     PRINCIPAL    CUMULATIVE    CUMULATIVE": REM  SPACES 6/16/2/5/4/4
  132. 1320  PRINT "YR.   REFUNDS  APPRECIATION   OF HOME        PAID        EQUITY      HOME VALUE": REM  SPACES 3/2/3/1/8/8/6
  133. 1330  GOSUB 790:C = 0:AC = 0::BM = 1
  134. 1340 C = C +1: GOSUB 360
  135. 1350  IF HA = 0  THEN HV = A(1)
  136. 1360 HA = HV *A(20)/100:HV = HV +HA: REM  CALC. APPRECIATION
  137. 1370  POKE 36,2 - LEN( STR$(CT)): PRINT CT;
  138. 1380 G = 13:W = TR:C(6) = C(6) +W: GOSUB 160:G = 25:W = HA:C(7) = C(7) +W: GOSUB 160:G = 38:W = TH(CT) -(HA +TR):C(8) = C(8) +W: GOSUB 160
  139. 1390 G = 51:W = TP:C(9) = C(9) +W: GOSUB 160:G = 65:W = C(7) +C(9) +(A(1) -A(2)): GOSUB 160:G = 79:W = HV: GOSUB 160: PRINT 
  140. 1400 VT = 15: GOSUB 800
  141. 1410  IF CT <A(4)  THEN 1340
  142. 1420  GOSUB 790
  143. 1430 G = 13:W = C(6): GOSUB 160:G = 25:W = C(7): GOSUB 160:G = 38:W = C(8): GOSUB 160:G = 51:W = C(9): GOSUB 160
  144. 1440 CT = 0:C = 0:AC = 0
  145. 1450  IF G$ = "P"  THEN  PRINT  CHR$(12)
  146. 1460 VT = 1:C = 8: GOSUB 800
  147. 1470 AA$ = "RENTAL ANALYSIS":A1 = 7:A2 = 9: GOSUB 1830: PRINT : PRINT : PRINT 
  148. 1480  PRINT "    OTHER COSTS   RENT COST      RENTAL     CASH SAVED   INT. YIELD   NET  COST": REM  SPACES 4/3/6/5/3/1/3
  149. 1490  PRINT "YR. W/INFLATION  W/INCREASES    PAYMENTS    BY RENTING   ON SAVINGS  OF RENTING": REM  SPACES 1/2/4/4/3/1/2/1
  150. 1500  GOSUB 790:YR = 0
  151. 1510 CT = CT +1:C = C +1:RT = RT *(1 +A(23)/100): IF RT = 0  THEN RT = A(21): REM  CALCULATE RENTAL INCREASE
  152. 1520 AC = ((A(25)/100) *AC) +AC: IF AC = 0  THEN AC = A(22): REM  INFLATION OF OTHER COSTS
  153. 1530  POKE 36,2 - LEN( STR$(CT)): PRINT CT;:G = 14:W = AC:C(10) = C(10) +W: GOSUB 160:G = 27:W = RT *12:C(11) = C(11) +W: GOSUB 160:G = 40:W = W +AC:C(12) = C(12) +W:C3 = W: GOSUB 160:G = 53:W = TH(CT) -W: IF W <.01  THEN W = 0.00
  154. 1540 C(13) = C(13) +W:C4 = W:SA = SA +W: GOSUB 160:S1 = SA *(A(24)/100):SA = SA +S1
  155. 1550 G = 66:W = S1:C(14) = C(14) +W:C5 = W: GOSUB 160:G = 79:W = C3 -(C4 +C5):C(15) = C(15) +W: GOSUB 160: PRINT 
  156. 1560 VT = 15: GOSUB 800
  157. 1570  IF CT <A(4)  THEN 1510
  158. 1580  GOSUB 790
  159. 1590 G = 14:W = C(10): GOSUB 160:G = 27:W = C(11): GOSUB 160:G = 40:W = C(12): GOSUB 160:G = 53:W = C(13): GOSUB 160:G = 66:W = C(14): GOSUB 160:G = 79:W = C(15): GOSUB 160: PRINT 
  160. 1600  IF G$ = "P"  THEN  PRINT  CHR$(12)
  161. 1610 VT = 1:C = 8: GOSUB 800
  162. 1620  REM 
  163. 1630  REM  SUMMARY
  164. 1640  REM 
  165. 1650  POKE 36,25: PRINT "RENTAL AND OWNERSHIP SUMMARY": PRINT : IF G$ = "P"  THEN  PRINT 
  166. 1660  POKE 36,38: PRINT "OWN          RENT": PRINT : REM  SPACES 10
  167. 1670  PRINT "OTHER COSTS";:G = 41:W = C(1): GOSUB 160:G = 55:W = C(10): GOSUB 160: PRINT 
  168. 1680  PRINT "MORTGAGE/RENT";:G = 41:W = C(3): GOSUB 160:G = 55:W = C(11): GOSUB 160: PRINT 
  169. 1690  PRINT "PROPERTY TAX & MORTGAGE INS.";:G = 41:W = C(2): GOSUB 160:G = 55:W = 0: GOSUB 160: PRINT 
  170. 1700  PRINT "LOST INTEREST OF SAVINGS";:G = 41:W = C(4): GOSUB 160:G = 55:W = 0: GOSUB 160: PRINT 
  171. 1710  GOSUB 1820: PRINT "TOTAL CASH EXPENDED";:G = 41:W = C(5): GOSUB 160:G = 55:W = C(12): GOSUB 160: PRINT : PRINT : IF G$ = "P"  THEN  PRINT : PRINT 
  172. 1720  PRINT "CASH SAVED BY RENTING";:G = 41:W = 0: GOSUB 160:G = 55:W = C(13): GOSUB 160: PRINT 
  173. 1730  PRINT "INTEREST YIELD ON SAVINGS";:G = 41:W = 0: GOSUB 160:G = 55:W = C(14): GOSUB 160: PRINT 
  174. 1740  PRINT "TAX BENEFITS";:G = 41:W = C(6): GOSUB 160:G = 55:W = 0: GOSUB 160: PRINT 
  175. 1750  PRINT "APPRECIATION OF PROPERTY";:G = 41:W = C(7): GOSUB 160:G = 55:W = 0: GOSUB 160: PRINT 
  176. 1760  GOSUB 1820: PRINT "TOTAL INCOME & EQUITY";:G = 41:W = C(6) +C(7): GOSUB 160:G = 55:W = C(13) +C(14): GOSUB 160: PRINT : PRINT : IF G$ = "P"  THEN  PRINT : PRINT 
  177. 1770  PRINT "TOTAL CASH EXPENDED";:G = 41:W = C(5): GOSUB 160:G = 55:W = C(12): GOSUB 160: PRINT 
  178. 1780  PRINT "TOTAL INCOME & EQUITY";:G = 41:W = 0 -(C(6) +C(7)): GOSUB 160:G = 55:W = 0 -(C(13) +C(14)): GOSUB 160: PRINT 
  179. 1790  GOSUB 1820
  180. 1800  PRINT "NET COST";:G = 41:W = C(8): GOSUB 160:G = 55:W = C(15): GOSUB 160: PRINT 
  181. 1810  GOTO 2590
  182. 1820  POKE 36,31: PRINT "----------    ----------": RETURN : REM  4 SPACES
  183. 1830  POKE 36,26: PRINT M$(2): PRINT : PRINT 
  184. 1840  POKE 36,40 - INT( LEN(AA$)/2): PRINT AA$: PRINT :AA = 0
  185. 1850  FOR X = A1 TO A2: POKE 36,0: PRINT E$(X);:G = 37:W = E(X): GOSUB 160: POKE 36,41: PRINT E$(X +1 +(A2 -A1));:G = 79:W = E(X +1 +(A2 -A1)): GOSUB 160: PRINT : NEXT : RETURN 
  186. 1860 A1 = 1:A2 = 3: GOSUB 1830: POKE 36,0: PRINT E$(11);:G = 37:W = E(11): GOSUB 160: POKE 36,41: PRINT E$(12);:G = 79:W = E(12): GOSUB 160: PRINT : PRINT : PRINT : RETURN 
  187. 1870  REM 
  188. 1880  REM  MORTGAGE TABLES AND MENU
  189. 1890  REM 
  190. 1900 F$ = "MORTGAGE TABLES MENU":A1 = 7:A2 = 9:CC = 3:LC = 29: GOSUB 2690:HH = X -6: HOME : ON HH GOTO 1910,1910,2680
  191. 1910  HOME : VTAB 14: POKE 36,30: PRINT "(DEFAULT = $2,000)": VTAB 12: POKE 36,28: INPUT "ENTER TABLE INCREMENTS ";IN$:IN =  VAL(IN$): IF IN = 0  THEN IN = 2000
  192. 1920  GOSUB 760:A$ = "MORTGAGE PAYMENT ": IF HH = 2  THEN A$ = "2ND YEAR NET "
  193. 1930 A$ = A$ +"TABLES " + STR$(A(4)) +" YEAR LOAN": POKE 36,40 - LEN(A$)/2: PRINT A$: PRINT 
  194. 1940 L1 = A(1)
  195. 1950 L2 = L1: POKE 36,0: PRINT "RATE";:G = 16: FOR X = 1 TO 8
  196. 1960  IF L2 <0  THEN 1990
  197. 1970  IF L2 <1000  THEN W = L2: GOSUB 160: GOTO 1990
  198. 1980 A$ =  STR$( INT(L2)):A$ =  LEFT$(A$, LEN(A$) -3) +"," + RIGHT$(A$,3): POKE 36,G - LEN(A$): PRINT A$;: REM  REMOVE CENTS
  199. 1990 L2 = L2 -IN:G = G +9: NEXT : PRINT : GOSUB 790
  200. 2000 R = (A(3) -3): FOR Z = 1 TO 15
  201. 2010 L = L1:X = 0:G = 5:W = R: GOSUB 160:G = 16: FOR X = 1 TO 8:IR = R/1200: GOSUB 260:W = MP
  202. 2020  IF HH = 2  AND W >0  THEN L2 = L: GOSUB 360: GOSUB 360:W = AM:L = L2: REM  2ND YEAR NET
  203. 2030  IF W >0  THEN  GOSUB 160
  204. 2040 G = G +9:L = L -IN: NEXT : PRINT 
  205. 2050 R = R +.25: NEXT : IF L <1  THEN 2590
  206. 2060 L1 = L:C = C +1: IF C = 3  THEN 2590
  207. 2070  IF G$ = "P"  THEN  PRINT : PRINT : GOTO 1950
  208. 2080 VT = 3: GOSUB 1020: IF  ASC(H$) = 27  THEN 2620
  209. 2090  GOTO 1950
  210. 2100  REM 
  211. 2110  REM  AMORTIZATION SCHEDULES MENU
  212. 2120  REM 
  213. 2130 F$ = "AMORTIZATION SCHEDULES MENU":A1 = 10:A2 = 12:CC = 0:LC = 26: GOSUB 2690:HH = X -9: ON HH GOTO 2170,2310,2680
  214. 2140  REM 
  215. 2150  REM  YEARLY AMORTIZATION TABLE 
  216. 2160  REM 
  217. 2170  GOSUB 760: POKE 36,26: PRINT "YEARLY AMORTIZATION SCHEDULE": PRINT : PRINT : PRINT 
  218. 2180  FOR X = 2 TO 4: POKE 36,0: PRINT A$(X);:W = A(X):G = 37: GOSUB 160: PRINT : NEXT : GOSUB 240: POKE 36,0: PRINT "MONTHLY MORTGAGE";:W = MP:G = 37: GOSUB 160: PRINT : PRINT : PRINT 
  219. 2190  PRINT "        MORTGAGE      PAID        PAID        LOAN      CUMULATIVE   CUMULATIVE": REM  SPACES 8/6/8/8/6/3
  220. 2200  PRINT "YEAR    PAYMENT     INTEREST    PRINCIPAL    BALANCE     INTEREST     MORTGAGE ": REM  SPACES 4/5/4/4/5/5
  221. 2210  GOSUB 790:C = 0
  222. 2220  GOSUB 360:C = C +1
  223. 2230 C(1) = TY:C(2) = I:C(3) = TP:C(4) = L:C(5) = C(5) +I:C(6) = C(6) +TY:
  224. 2240 G = 4: PRINT YR;: FOR X = 1 TO 3:W = C(X):G = G +12: GOSUB 160: NEXT : FOR X = 4 TO 6:W = C(X):G = G +13: GOSUB 160: NEXT : PRINT 
  225. 2250 VT = 14: GOSUB 800
  226. 2260  IF M = 0  THEN 2590
  227. 2270 YR = YR +1: GOTO 2220
  228. 2280  REM 
  229. 2290  REM  MONTHLY AMORTIZATION TABLE
  230. 2300  REM 
  231. 2310  GOSUB 760: POKE 36,26: PRINT "MONTHLY AMORTIZATION SCHEDULE": PRINT 
  232. 2320  FOR X = 2 TO 4: POKE 36,0: PRINT A$(X);:W = A(X):G = 37: GOSUB 160: PRINT : NEXT : GOSUB 240: POKE 36,0: PRINT "MONTHLY MORTGAGE";:W = MP:G = 37: GOSUB 160: PRINT : PRINT :MT = BM:PC = 0
  233. 2330  PRINT "                    PAID      PAID        LOAN         CUMULATIVE    CUMULATIVE": REM  SPACES 20/6/8/9/4
  234. 2340  PRINT "PMT.  MO. YEAR    INTEREST  PRINCIPAL    BALANCE        INTEREST      MORTGAGE ": REM  SPACES 2/1/4/2/4/8/6
  235. 2350  GOSUB 790
  236. 2360 CT = CT +1:TP = 0:I = 0
  237. 2370 MI = L *IR:P = (MP -MI):TP = TP +P:I = I +MI:L = L -P
  238. 2380 C(1) = I:C(2) = TP:C(3) = L:C(4) = C(4) +I:C(5) = C(5) +MP
  239. 2390 G = 15: POKE 36,3 - LEN( STR$(CT)): PRINT CT"   ";MT$(MT)", "YR;: FOR X = 1 TO 2:W = C(X):G = G +10: GOSUB 160: NEXT :G = 34: FOR X = 3 TO 5:W = C(X):G = G +15: GOSUB 160: NEXT : PRINT 
  240. 2400 MT = MT +1:M = M -1
  241. 2410 VT = 11: IF MT >12  AND G$ = "S"  THEN  GOSUB 1020: IF  ASC(H$) = 27  THEN 2620
  242. 2420  IF MT >12  THEN MT = 1:YR = YR +1
  243. 2430  IF G$ = "P"  AND MT = 1  THEN PC = PC +1: IF M >0  AND PC = 4  THEN  PRINT  CHR$(12):PC = 0: GOTO 2330
  244. 2440  IF M = 0  THEN 2590
  245. 2450  GOTO 2360
  246. 2460  REM  TITLE SCREEN
  247. 2470  HOME : VTAB 10: POKE 36,18: PRINT "R E A L  E S T A T E  A D V I S O R": HTAB 30: PRINT "BY ROBERT A. ALBANITO": HTAB 20: PRINT "COPYRIGHT(C) 1990 MINDCRAFT PUBL. CORP.": VTAB 24: HTAB 27: PRINT "PRESS RETURN TO CONTINUE";: GET ZZ$: POKE 49168,0
  248. 2480  DIM A$(26),A(26),B$(29),B(29,5),E$(12),E(12),M$(14),V$(27),TH(40),MT$(12),C(15)
  249. 2490  FOR X = 1 TO 26: READ A$(X): NEXT : FOR X = 1 TO 29: READ B$(X): NEXT : FOR X = 1 TO 14: READ M$(X): NEXT 
  250. 2500  FOR X = 1 TO 12: READ MT$(X): NEXT 
  251. 2510  ONERR  GOTO 3470
  252. 2520  HOME : VTAB 12: HTAB 13: PRINT "GET AN EXISTING SETUP FILE OR CREATE A NEW ONE? (G/C) ";: GET G$: POKE 49168,0: IF G$ = "C"  OR G$ = "c"  THEN  FOR X = 1 TO 26: READ V$(X): NEXT : GOTO 2580
  253. 2530  IF G$ = "G"  OR G$ = "g"  THEN SW = 1: GOSUB 3180: GOTO 2550
  254. 2540  GOTO 2520
  255. 2550  PRINT D$;"VERIFY"F$
  256. 2560  PRINT : PRINT D$"OPEN"F$:FO = 1: PRINT D$"READ"F$: FOR X = 1 TO 27: INPUT V$(X): NEXT : PRINT D$"CLOSE"F$:FO = 0: IF V$(27) = "REA.FILE"  THEN 2580
  257. 2570 E = 5: GOTO 3500
  258. 2580  FOR X = 1 TO 26:A(X) =  VAL(V$(X)): NEXT : GOTO 2770
  259. 2590  IF G$ = "P"  THEN  PRINT  CHR$(12): PRINT  CHR$(4)"PR#0": PRINT  CHR$(4)"PR#3": PRINT : IF MM = 0  OR MM = 5  THEN H = 0: GOTO 2770
  260. 2600  IF G$ = "P"  THEN G$ = "": GOTO 2620
  261. 2610  VTAB 24: POKE 36,34: PRINT "PRESS ANY KEY ";: GET G$: POKE 49168,0
  262. 2620 A = 0:AG = 0:AM = 0:BM = 0:C = 0:C1 = 8:C2 = 0:C3 = 0:CC = 0:CT = 0:DI = 0:DP = 0:EI = 0:ET = 0:EW = 0:FR = 0:HA = 0:HV = 0:I = 0:IN = 0:IR = 0:L = 0:MC = 0:MP = 0:MI = 0:MM = 0:AC = 0:WD = 0:PE = 0:PS = 0:PT = 0
  263. 2630 RT = 0:R = 0:SA = 0:SI = 0:SR = 0:TD = 0:TI = 0:TP = 0:TR = 0:TY = 0:U = 0:VT = 0:H$ = "": FOR X = 1 TO 15:C(X) = 0: NEXT : FOR X = 1 TO 40:TH(X) = 0: NEXT :X = 0
  264. 2640  IF CG = 1  THEN  HOME : VTAB 10: POKE 36,22: PRINT "RESTORE SET-UP TO BEGINNING VALUES? ";: GET G$: POKE 49168,0: IF G$ = "Y"  OR G$ = "y"  THEN  FOR X = 1 TO 26:A(X) =  VAL(V$(X)): NEXT :CG = 0
  265. 2650  REM 
  266. 2660  REM  MAIN MENU
  267. 2670  REM 
  268. 2680 Z = 0:MM = 0: HOME :F$ = "MAIN MENU":A1 = 1:A2 = 6:CC = 9:LC = 25: GOSUB 2690:MM = X: ON MM GOTO 850,1070,1900,2130,2770: PRINT  CHR$(21): HOME : END 
  269. 2690  HOME : VTAB 8: POKE 36,40 -( LEN(F$)/2): PRINT F$: VTAB 10: FOR X = A1 TO A2: POKE 36,LC: PRINT M$(X): NEXT :X = A1: VTAB 10 +(A2 -A1 +2): POKE 36,18: PRINT "USE <ARROWS> TO SELECT...<RETURN> TO EXECUTE"
  270. 2700 V = X +CC: VTAB V: INVERSE : POKE 36,LC: PRINT M$(X);: WAIT  -16384,128: GET G$: POKE 49168,0:H =  ASC(G$): NORMAL : POKE 36,LC: PRINT M$(X): IF H = 13  THEN  RETURN 
  271. 2710  IF H = 21  OR H = 10  THEN X = X +1: IF X >A2  THEN X = A1
  272. 2720  IF H = 8  OR H = 11  THEN X = X -1: IF X <A1  THEN X = A2
  273. 2730  GOTO 2700
  274. 2740  REM 
  275. 2750  REM  SETUP MENU
  276. 2760  REM 
  277. 2770  HOME 
  278. 2780  VTAB 1: POKE 36,29: PRINT "----  SETUP MENU  ----": PRINT : IF H = 80  THEN  RETURN 
  279. 2790  VTAB 4: FOR Z = 1 TO 13: POKE 36,1: PRINT A$(Z);:W = A(Z):G = 38: GOSUB 130:Z = Z +13: POKE 36,41: PRINT A$(Z);:W = A(Z):G = 78: GOSUB 130:Z = Z -13: PRINT : NEXT : PRINT 
  280. 2800 V = 3:Z = 1:LT = 1:AA = 0
  281. 2810  VTAB 22: CALL  -958: HTAB 10: PRINT "USE THE <ARROWS/RETURN> KEYS TO CHANGE...<ESC> FOR MAIN MENU": HTAB 13: PRINT "<P> PRINT SETUP      <S> SAVE SETUP      <N> NEW SETUP":F1$ = "AMOUNT TO LARGE... PLEASE RE-ENTER"
  282. 2820 V = Z +3 +AA: VTAB V: INVERSE : POKE 36,LT: PRINT  LEFT$(A$(Z) +"                       ",27);: WAIT  -16384,128: GET G$: POKE 49168,0:H =  ASC(G$): NORMAL : REM  23 SPACES
  283. 2830  IF H = 27  THEN 2680
  284. 2840  IF H = 80  OR H = 112  THEN  GOSUB 770: GOSUB 2780: FOR Z = 1 TO 26: POKE 36,20: PRINT A$(Z);:W = A(Z):G = 61: GOSUB 130: PRINT : NEXT : GOTO 2590
  285. 2850  IF H = 83  OR H = 115  THEN SW = 2: VTAB 18: CALL  -958: GOSUB 3180: VTAB 18: PRINT : CALL  -958: POKE 36,30: PRINT "SAVING SETUP TO DISK"
  286. 2860  IF H = 83  OR H = 115  THEN  PRINT : PRINT D$"OPEN"F$:FO = 1: PRINT D$"WRITE"F$: FOR X = 1 TO 26: PRINT A(X): NEXT : PRINT "REA.FILE": PRINT D$"CLOSE"F$:FO = 0: ON SS GOTO 2750: VTAB 19: CALL  -958: GOTO 2770
  287. 2870  IF H = 78  OR H = 110  THEN 2520
  288. 2880  IF H = 13  THEN G$ = "": GOTO 2930
  289. 2890  POKE 36,LT: PRINT  LEFT$(A$(Z) +"                       ",27);: REM  23 SPACES
  290. 2900  IF H = 21  OR H = 10  THEN Z = Z +1: IF Z >13  THEN AA =  -13:LT = 41: IF Z >26  THEN Z = 1:AA = 0:LT = 1
  291. 2910  IF H = 8  OR H = 11  THEN Z = Z -1: IF Z <14  THEN AA = 0:LT = 1: IF Z <1  THEN Z = 26:AA =  -13:LT = 41
  292. 2920  GOTO 2820
  293. 2930  VTAB V: POKE 36,LT +27: PRINT "          ";: VTAB V: POKE 36,LT +37 - LEN(G$): PRINT G$;: PRINT ;: GET A$: POKE 49168,0:A =  ASC(A$): IF A = 13  THEN 3000: REM  10 SPACES
  294. 2940  IF Z = 12  THEN  IF A = 83  OR A = 115  THEN G$ = "1": GOTO 3110
  295. 2950  IF Z = 12  THEN  IF A = 77  OR A = 109  THEN G$ = "2": GOTO 3110
  296. 2960  IF Z = 12  THEN F1$ = "ENTER <M> OR <S>..": GOTO 3130
  297. 2970  IF A <46  OR A >57  OR A = 47  THEN G$ = "": GOTO 2930
  298. 2980 G$ = G$ +A$: IF  LEN(G$) >6  THEN 3130
  299. 2990  GOTO 2930
  300. 3000 H =  VAL(G$): IF G$ = ""  THEN H = 0:F1$ = "NO ENTRY": GOTO 3140
  301. 3010  IF Z = 26  THEN  IF H <1990  OR H >2000  THEN F1$ = "INCORRECT DATE...": GOTO 3130
  302. 3020  IF Z = 2  AND H >A(1)  THEN F1$ = A$(Z) +" TO HIGH...": GOTO 3130
  303. 3030  IF Z <7  AND H <1  OR Z = 13  AND H <1  OR Z = 14  AND H <1  OR Z = 18  AND H <1  THEN F1$ = A$(Z) +" TO LOW...": GOTO 3130
  304. 3040  IF Z = 14  AND H < = A(16)  THEN F1$ = A$(Z) +" TO LOW...": GOTO 3130
  305. 3050  IF Z = 3  OR Z = 17  OR Z = 20  OR Z = 23  OR Z = 24  OR Z = 25  THEN  IF H >20  THEN 3120
  306. 3060  IF Z = 4  AND H >45  THEN F1$ = A$(Z) +" TO LONG...": GOTO 3130
  307. 3070  IF Z = 7  AND H >7  THEN 3120
  308. 3080  IF Z = 8  OR Z = 9  THEN  IF H >4000  THEN 3120
  309. 3090  IF Z = 16  AND H > = A(14)  THEN 3120
  310. 3100  IF Z = 18  AND H >12  THEN 3120
  311. 3110  INVERSE :A(Z) =  VAL(G$):W = A(Z): VTAB V: POKE 36,LT: PRINT A$(Z);:G = LT +37: GOSUB 130:A = 0:G$ = "":CG = 1: GOTO 2820
  312. 3120 F1$ = A$(Z) +" TO HIGH..."
  313. 3130 G$ = "":A$ = "":A = 0:F1$ = F1$ +" PLEASE RE-ENTER"
  314. 3140  VTAB 20: CALL  -958: POKE 36,40 - LEN(F1$)/2: PRINT F1$: FOR XY = 1 TO 3000: NEXT :XY = 0: VTAB 20: CALL  -958: VTAB V: POKE 36,LT +27: PRINT "       ";:G = LT +37:W = A(Z): GOSUB 130: PRINT : GOTO 2810
  315. 3150  REM 
  316. 3160  REM  SET SLOT# & DRIVE# 
  317. 3170  REM 
  318. 3180  VTAB 19: HTAB 26: PRINT "SLOT (1-7):";: GET SL$: POKE 49168,0:SL =  VAL(SL$): PRINT SL
  319. 3190  IF SL <1  OR SL >7  THEN 3180
  320. 3200  VTAB 19: POKE 36,41: PRINT "DRIVE (1-2):";: GET DR$: POKE 49168,0:DR =  VAL(DR$): PRINT DR
  321. 3210  IF DR <1  OR DR >2  THEN 3200
  322. 3220 SS = 2: IF  PEEK(48896) = 76  THEN 3340: REM  DETERMINE IF USING PRODOS
  323. 3230  REM 
  324. 3240  REM  DOS 3.3 
  325. 3250  REM 
  326. 3260  POKE 43626,SL: POKE 43624,DR
  327. 3270  VTAB 23: HTAB 26: PRINT "PRESS (?) TO CATALOG DISK"
  328. 3280  VTAB 21: HTAB 26:F$ = "": INPUT "FILE NAME: ";F$: IF  LEN(F$) <1  THEN 3280
  329. 3290  IF F$ = "?"  THEN SS = 1: HOME : PRINT D$;"CATALOG": FOR X = 1 TO 3: PRINT : NEXT : GOTO 3270
  330. 3300  RETURN 
  331. 3310  REM 
  332. 3320  REM  PRODOS 
  333. 3330  REM 
  334. 3340  PRINT  CHR$(4);"PREFIX,S";SL$;",D";DR$
  335. 3350  PRINT  CHR$(4);"PREFIX": INPUT PF$
  336. 3360  PRINT  CHR$(4);"PREFIX";PF$: PRINT 
  337. 3370  VTAB 19: CALL  -868: HTAB 26: PRINT "PREFIX:"PF$: PRINT 
  338. 3380  VTAB 23: HTAB 26: PRINT "PRESS (?) TO CATALOG DISK"
  339. 3390  VTAB 21: HTAB 26:F$ = "": INPUT "PATH: ";F$:NF = 1
  340. 3400  IF F$ = "?"  THEN  HOME : PRINT D$;"CAT": FOR X = 1 TO 3: PRINT : NEXT : GOTO 3380
  341. 3410  IF  LEN(F$) >0  THEN  FOR NC = 1 TO  LEN(F$):NA =  ASC( MID$ (F$,NC,1)):NF = ((NA >64  AND NA <91)  OR (NA >96  AND NA <122)  OR (NA = 46)  OR (NA >47  AND NA <58  AND NC >1))  AND NF = 1: NEXT 
  342. 3420  IF F$ = ""  OR  LEN(F$) >15  OR NF = 0  OR  LEFT$(F$,1) = "."  THEN  VTAB 21: POKE 36,32: PRINT "INVALID PATH NAME": FOR X = 1 TO 1500: NEXT : VTAB 21: POKE 36,30: CALL  -868: GOTO 3380
  343. 3430  RETURN 
  344. 3440  REM 
  345. 3450  REM  ERROR ROUTINE
  346. 3460  REM 
  347. 3470 E =  PEEK(222): POKE 216,0: NORMAL 
  348. 3480  ONERR  GOTO 3470
  349. 3490  IF SW = 1  THEN  TEXT : HOME 
  350. 3500  IF FO = 1  THEN  PRINT : PRINT D$;"CLOSE";F$
  351. 3510  VTAB 12: IF SW = 2  THEN  VTAB 19
  352. 3520  IF  PEEK(48896) = 76  AND E = 3  THEN  POKE 36,25: PRINT "NO DRIVE CONNECTED TO SLOT #";SL: GOTO 3610
  353. 3530  IF E = 4  THEN  POKE 36,23: PRINT "DISK IS WRITE PROTECTED, REMOVE TAB": GOTO 3610
  354. 3540  IF E = 5  THEN  POKE 36,26 - LEN(F$)/2: PRINT F$;"...IS NOT AN R.E.ADVISOR FILE": GOTO 3610
  355. 3550  IF E = 6  THEN  POKE 36,25: PRINT "THAT FILE IS NOT ON THIS DISK!": GOTO 3610
  356. 3560  IF E = 8  THEN  POKE 36,10: PRINT "A DISK ERROR HAS OCCURRED! CHECK THE DOOR OR DISK IN DRIVE ";DR: GOTO 3610
  357. 3570  IF E = 9  THEN  POKE 36,32: PRINT "THE DISK IS FULL!": GOTO 3610
  358. 3580  IF E = 13  THEN  POKE 36,24: PRINT "THE PROGRAM ONLY USES TEXT FILES": GOTO 3610
  359. 3590  IF E = 255  THEN 2770
  360. 3600  HOME : POKE 36,25: PRINT "ERROR #"E"  HAS OCCURED!"
  361. 3610  PRINT : POKE 36,27: PRINT "PRESS ANY KEY TO CONTINUE";: GET G$: POKE 49168,0
  362. 3620  ON SW GOTO 2520: VTAB 17: CALL  -958: PRINT : GOTO 2810
  363. 3630  DATA  VALUE OF HOME,AMOUNT OF MORTGAGE,INTEREST RATE (%),LENGTH OF MORTGAGE (YRS.),PROPERTY TAX,MORTGAGE INSURANCE,NUMBER OF POINTS,CLOSING COSTS
  364. 3640  DATA  I.R.A. CONTRIBUTION,CHARITIES,TOTAL PERSONAL INT. PAID,MARITAL STATUS,PERSONAL EXEMPTIONS,SALARIES,OTHER TAXABLE INCOME,F.I.T.W.,STATE INCOME TAX (%),MONTH OF FIRST PAYMENT
  365. 3650  DATA  OTHER YEARLY HOME COSTS,APPRECIATION OF HOME (%),MONTHLY COST OF RENT,OTHER YEARLY RENTAL COSTS,YEARLY RENT INCREASES (%),TAX DEFERRED/FREE RATES (%),ESTIMATED INFLATION (%),CURRENT YEAR
  366. 3660  DATA  MONTHLY MORTGAGE PAYMENT,ADDITIONAL MONTHLY COST,TOTAL MONTHLY PAYMENT,TOTAL PRINCIPAL,LOAN BALANCE,TOTAL INTEREST,PROPERTY TAX,I.R.A.,MORTGAGE INS.,POINTS AMOUNT,CLOSING COSTS
  367. 3670  DATA  STATE TAX,CHARITIES,PERSONAL INTEREST,PERSONAL EXEMPTION,TOTAL DEDUCTIONS,INCOME,OTHER TAXABLE INCOME,TOTAL INCOME,ADJUSTED GROSS INCOME,F.I.T.W.,EST. FEDERAL TAX,EST. FEDERAL REFUND
  368. 3680  DATA  STATE TAX WITHHELD,EST. STATE TAX,EST. STATE REFUND,TOTAL REFUNDS,NET MORTGAGE PMT.,NET TOTAL MONTH PMT.
  369. 3690  DATA  ITEMIZED FIVE YEAR REPORT,RENTAL AND OWNERSHIP ANALYSIS,MORTGAGE AND INTEREST RATE TABLES,AMORTIZATION SCHEDULES,SETUP MENU,QUIT
  370. 3700  DATA  MORTGAGE PAYMENT TABLES,2ND YEAR NET TABLES,MAIN MENU,YEARLY AMORTIZATION SCHEDULE,MONTHLY AMORTIZATION SCHEDULE,MAIN MENU,SEND TO SCREEN,SEND TO PRINTER
  371. 3710  DATA  JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
  372. 3720  DATA  100000,80000,10,15,1000,0,3,1000,2250,500,0,2,2,40000,0,0,2.5,1,2000,5,500,1000,4,6,4,1990