1000 EXTEND & ! & ! Calculates payments for a loan & ! & ! 1-Oct-78 F. Mitchell Erskine College & ! & ! 18-Oct-85 last edit *M & ! & ! Author: W. Franklin Mitchell, Jr. & ! Director of Computer Services & ! Erskine College, Due West, South Carolina & ! & ! *********************************************************************** & ! * This software is furnished without charge by Erskine College and * & ! * may be copied only with the inclusion of the author's name and * & ! * copyright notice. No title to or ownership of this software is * & ! * hereby transmitted. Neither Erskine College nor the author assumes * & ! * any responsibility for the use or reliability of this software. The * & ! * author welcomes comments and/or bug reports mailed to Franklin * & ! * Mitchell, Erskine College, Box 86L, Due West, South Carolina 29639. * & ! *********************************************************************** & 1020 G$ = "$$,###,###.##" & \ I.D = 12. & \ L.D = 50000. & \ P.D = 12. & \ CC$ = SYS(CHR$(7%)) & \ GOTO 1040 UNLESS LEFT(CC$, 4%) = "INTZ" & \ I.D = CVT$F(MID(CC$, 5%, 4%)) & \ L.D = CVT$F(MID(CC$, 9%, 4%)) & \ P.D = CVT$F(MID(CC$, 13%, 4%)) & 1040 PRINT CHR$(155%); '[H'; CHR$(155%); '[J' & \ PRINT "INT V2.0 "; TIME$(0%); " "; DATE$(0%) & \ PRINT & \ PRINT & \ PRINT "Interest in percent <"; NUM1$(I.D); ">"; & \ INPUT INTEREST.RATE & \ INTEREST.RATE = I.D IF INTEREST.RATE = 0. & \ I.D = INTEREST.RATE & \ INTEREST.RATE = INTEREST.RATE/100. & 1060 PRINT & \ PRINT "Amount of loan <" NUM1$(L.D); ">"; & \ INPUT LOAN.AMOUNT & \ LOAN.AMOUNT = L.D IF LOAN.AMOUNT = 0. & \ L.D = LOAN.AMOUNT & \ LOAN.AMOUNT = LOAN.AMOUNT*100. & 1070 PRINT & \ PRINT "Number of payments per year <"; NUM1$(P.D); ">"; & \ INPUT NR.PAYMENTS & \ NR.PAYMENTS = P.D IF NR.PAYMENTS = 0. & \ P.D = NR.PAYMENTS & \ CC$ = SYS(CHR$(8%) + 'INTZ' + CVTF$(I.D) + CVTF$(L.D) + CVTF$(P.D)) & 1080 PRINT & \ INPUT "Print payment schedule "; Q$ & \ Q$ = CVT$$(Q$, -1%) & \ Q$ = 'N' IF LEN(Q$) = 0% & \ Q% = -1% & \ Q% = 0% IF ASCII(Q$) = ASCII('Y') & \ GOTO 1120 IF Q% = 0% & 1100 PRINT & \ INPUT "Range of years ==> begining number of years <20>"; Y1 & \ Y1 = 20. IF Y1 = 0. & \ PRINT & \ INPUT "Ending number of years <30>"; Y2 & \ Y2 = 30. IF Y2 = 0. & \ N = Y1 & \ GOTO 1160 & 1120 PRINT & \ INPUT "Number of years <25>"; N & \ N = 25. IF N = 0. & \ PRINT & \ INPUT "Extra amount to pay per payment <0>"; EXTRA & \ EXTRA = EXTRA * 100. & \ IF EXTRA <> 0. & THEN & PRINT & \ INPUT "Pay extra amount for how many years <999>"; EXTRA.YR & \ EXTRA.YR = 999. IF EXTRA.YR = 0. & 1140 PRINT & \ PRINT "Pay "; & \ PRINT "additional "; IF EXTRA <> 0. & \ INPUT "extra to round balance to xxx0.00 "; Q$ & \ Q$ = CVT$$(Q$, -1%) & \ Q$ = 'N' IF LEN(Q$) = 0% & \ R% = 0% & \ R% = -1% IF ASCII(Q$) = ASCII('Y') & 1160 PRINT & \ PRINT "For a loan of $"; NUM1$(LOAN.AMOUNT/100.); & \ PRINT " at "; NUM1$(INTEREST.RATE*100.); & \ PRINT "% for"; N; "years with"; NR.PAYMENTS; "payments/year" & \ N = N*NR.PAYMENTS & \ I = INTEREST.RATE/NR.PAYMENTS & \ B = 1. + I & \ T = 12./NR.PAYMENTS & \ PAYMENT = LOAN.AMOUNT*I/(1. - 1./B^N) & \ PRINT & \ PRINT "Amount of payment: "; & \ PRINT USING G$, PAYMENT/100.; & \ PRINT " Total interest: "; & \ PRINT USING G$, PAYMENT/100.*N - LOAN.AMOUNT/100. & \ PRINT & 1180 IF Q% & THEN & Y1 = Y1 + 1. & \ IF Y1 > Y2 & THEN & 32767 & ELSE & N = Y1 & \ GOTO 1160 & 1200 BALANCE = LOAN.AMOUNT & \ D = 0. & \ YEAR = 1. & \ T$ = "Year Month Payment Interest App To Prin Balance" & \ F$ = "#### #### #,###,###.## #,###,###.## #,###,###.## ##,###,###.##" & \ PRINT T$ & 1220 D = D + T & \ IF D > 12. & THEN & D = T & \ YEAR = YEAR + 1. & \ PRINT & 1230 INT.PAYMENT = BALANCE * I & \ EXTRA = 0. IF YEAR > EXTRA.YR & \ DED.PRIN = PAYMENT - INT.PAYMENT + EXTRA & \ R = 0. & \ IF R% & THEN & BAL = BALANCE - DED.PRIN & \ R = BAL - INT(BAL/1000.) * 1000. & \ DED.PRIN = PAYMENT - INT.PAYMENT + EXTRA + R & 1235 BALANCE = BALANCE - DED.PRIN & 1240 PRINT USING F$, YEAR, D, (PAYMENT + EXTRA + R)/100., & INT.PAYMENT/100., DED.PRIN/100., BALANCE/100. & 1250 TOTAL.I = TOTAL.I + INT.PAYMENT & \ TOTAL.P = TOTAL.P + DED.PRIN + INT.PAYMENT & \ GOTO 1220 IF BALANCE >= PAYMENT + EXTRA & 1260 LAST.I = BALANCE * I & \ LAST.PAYMENT = BALANCE + LAST.I & \ PRINT USING F$, YEAR, D + T, LAST.PAYMENT/100., & LAST.I/100., BALANCE/100., 0. & \ TOTAL.I = TOTAL.I + LAST.I & \ TOTAL.P = TOTAL.P + LAST.PAYMENT & \ PRINT & \ PRINT & \ PRINT "Total Interest is "; & \ PRINT USING G$, TOTAL.I/100. & \ PRINT & \ PRINT "Total Payout is "; & \ PRINT USING G$, TOTAL.P/100. & 32767 END