9000  REM *****BNDSWH*****BUSINESS PROGRAM
9002  REM BNDSWH**********VERSION #1 (7/31/69)*****BOND SWITCH*****
9004  REM
9006  PRINT "*  BOND SWITCH  *"
9008  PRINT 
9010  PRINT "THIS PROGRAM CALCULATES THE EFFECT OF A BOND SWITCH."
9012  PRINT 
9014  PRINT "DO YOU WISH TO ENTER YOUR DATA FROM THE TELETYPE AS IT BECOMES NECES-"
9016  PRINT "SARY, OR INTERNALLY WITH DATA-STATEMENTS? (ENTER 'T' OR 'D')";
9018  INPUT A$
9020  IF A$="D" THEN 9110
9022  PRINT 
9024  PRINT "WHAT IS THE BOOK VALUE OF THE OLD BOND";
9026  INPUT B1
9028  PRINT "WHAT IS THE PRICE OF THE OLD BOND";
9030  INPUT P1
9032  PRINT "COUPON ON OLD BOND";
9034  INPUT C1
9036  PRINT "MATURITY ON OLD BOND IN YEARS, MONTHS";
9038  INPUT M1,M3
9040  PRINT "PROCEEDS ON REDEMPTION OF OLD BOND";
9042  INPUT R1
9044  PRINT "TAX RATE ON OLD BOND INTEREST PAYMENTS";
9046  INPUT T1
9048  PRINT 
9050  PRINT "WHAT IS THE PRICE OF THE NEW BOND";
9052  INPUT P2
9054  PRINT "COUPON ON NEW BOND";
9056  INPUT C2
9058  PRINT "MATURITY ON NEW BOND IN YEARS, MONTHS";
9060  INPUT M2,M4
9062  PRINT "PROCEEDS ON REDEMPTION OF NEW BOND";
9064  INPUT R2
9066  PRINT "TAX RATE ON NEW BOND INTEREST PAYMENTS";
9068  INPUT T2
9070  PRINT "---"
9072  PRINT "HOW MANY YEARS, MONTHS TO TERMINAL DATE";
9073  INPUT S1,S2
9074  IF S1<5 THEN 9077
9075  PRINT "LIFE TOO LONG. ENTER A VALUE < 5, OR CHANGE THE DIM-STATEMENT."
9076  GOTO 9073
9077  PRINT "PREDICTED YIELD ON OLD BOND TO TERMINAL DATE";
9078  INPUT Y3
9080  PRINT "PREDICTED YIELD ON NEW BOND TO TERMINAL DATE";
9082  INPUT Y4
9084  PRINT "CAPITAL LOSS RATE NOW, CAPITAL GAINS RATE NOW";
9086  INPUT T3,T4
9088  PRINT "CAPITAL LOSS RATE AT TERMINATION DATE, CAPITAL GAINS RATE THEN";
9090  INPUT T5,T6
9092  PRINT "CAPITAL GAIN RATE AT MATURITY OF OLD BOND";
9094  INPUT D3
9096  PRINT "CAPITAL GAIN RATE AT MATURITY OF NEW BOND";
9098  INPUT D4
9100  PRINT "AFTER TAX REINVESTMENT RATE ON COUPONS";
9102  INPUT Y9
9104  PRINT 
9106  PRINT 
9108  GOTO 9114
9110  READ B1,P1,C1,M1,M3,R1,T1,P2,C2,M2,M4,R2,T2
9112  READ S1,S2,Y3,Y4,T3,T4,T5,T6,D3,D4,Y9
9114  DIM A[15],L[10,10],D$[10],N$[17]
9116  LET C1=C1/2
9118  LET C2=C2/2
9120  LET M=M1*2+M3/6
9122  LET M7=0
9124  LET M8=INT(M)-1
9126  LET M9=M-INT(M)
9128  LET C=C1
9130  LET U1=P1+C1*(1-M9)
9132  LET U2=R1+C1
9134  GOSUB 9656
9136  LET Q1=2*(EXP(Y)-1)
9138  IF B1<100 THEN 9144
9140  LET D1=(B1-100)/INT(M+1)
9142  GOTO 9146
9144  LET D1=0
9146  LET C3=C1-(C1-D1)*T1
9148  LET B9=B1-D1*(INT(M+1))
9150  LET G5=D3*(R1-B9)
9152  LET C=C3
9154  LET U1=P1+C1*(1-M9)*(1-T1)
9156  LET U2=R1-G5+C3
9158  GOSUB 9656
9160  LET Q3=2*(EXP(Y)-1)
9162  IF P1<100 THEN 9168
9164  LET D5=(P1-100)/INT(M+1)
9166  GOTO 9170
9168  LET D5=0
9170  LET C5=C1-(C1-D5)*T1
9172  LET B9=P1-D5*(INT(M+1))
9174  LET G7=D3*(R1-B9)
9176  LET C=C5
9178  LET U1=P1+C1*(1-M9)*(1-T1)
9180  LET U2=R1-G7+C5
9182  GOSUB 9656
9184  LET Q5=2*(EXP(Y)-1)
9186  LET M=M2*2+M4/6
9188  LET M7=0
9190  LET M8=INT(M)-1
9192  LET M9=M-INT(M)
9194  LET C=C2
9196  LET U1=P2+C2*(1-M9)
9198  LET U2=R2+C2
9200  GOSUB 9656
9202  LET Q2=2*(EXP(Y)-1)
9204  IF P2<100 THEN 9210
9206  LET D2=(P2-100)/INT(M+1)
9208  GOTO 9212
9210  LET D2=0
9212  LET C4=C2-(C2-D2)*T2
9214  LET B9=P2-D2*(INT(M+1))
9216  LET G6=D4*(R2-B9)
9218  LET C=C4
9220  LET U1=P2+C2*(1-M9)*(1-T2)
9222  LET U2=R2-G6+C4
9224  GOSUB 9656
9226  LET Q4=2*(EXP(Y)-1)
9228  PRINT 
9230  PRINT "                    ---------------"
9231  PRINT 
9232  PRINT "ENTER THE NUMBER OF THE SENSITIVITY TABLE YOU PREFER:"
9233  PRINT "   '0' TO TERMINATE PROGRAM"
9234  PRINT "   '1' FOR TERMINAL DATE SENSITIVITY"
9236  PRINT "   '2' FOR YIELD SPREAD SENSITIVITY"
9238  PRINT "   '3' FOR YIELDS SENSITIVITY"
9240  PRINT "   '4' FOR NO TABLES, FINAL VALUES"
9242  INPUT Z
9244  PRINT 
9246  PRINT "************************************************************************"
9248  PRINT 
9250  LET K2=Y3
9252  LET K1=Y4
9254  LET Z1=0
9256  GOTO (Z+1) OF 9878,9260,9268,9298,9314
9258  GOTO 9314
9260  FOR S=1 TO S1*2+S2/6+2
9262  LET Z1=Z1+1
9264  LET A[Z1]=S/2
9266  GOTO 9316
9268  LET Y6=Y4-Y3
9270  PRINT "ENTER THE RANGE OF SPREADS YOU WISH TO CONSIDER.  (NEW BOND YIELD"
9272  PRINT "TO OLD BOND YIELD AT TERMINAL DATE)."
9274  PRINT "ENTER THE HIGH SPREAD IN BASIS PTS., THE LOW SPREAD, & THE SENSITIVITY"
9276  PRINT "INCREMENT";
9278  INPUT Z4,Z5,Z6
9279  IF (Z5-Z4)/Z6<10 THEN 9282
9280  PRINT "TOO SMALL AN INCREMENT.  ENTER NEW VALUES";
9281  GOTO 9278
9282  LET Z4=Z4/10000
9284  LET Z5=Z5/10000
9286  LET Z6=Z6/10000
9288  FOR K1=Y3+Z4 TO Y3+Z5 STEP Z6
9290  LET Z1=Z1+1
9292  LET A[Z1]=INT((K1-Y3)*10000+.005)
9294  LET K2=Y3
9296  GOTO 9314
9298  PRINT "ENTER THE RANGE OF OLD BOND YIELDS AT TERMINAL DATE";
9300  PRINT "INPUT HIGH YIELD, LOW YIELD, AND INCREMENT DESIRED";
9301  INPUT Z4,Z5,Z6
9302  IF (Z5-Z4)/Z6<10 THEN 9305
9303  PRINT "INCREMENT TOO SMALL. ENTER NEW VALUES."
9304  GOTO 9301
9305  LET Y6=Y4-Y3
9306  FOR K2=Z5 TO Z4 STEP Z6
9308  LET K1=K2+Y6
9310  LET Z1=Z1+1
9312  LET A[Z1]=K2
9314  LET S=S1*2+S2/6
9316  LET M=M1*2+M3/6
9318  LET A1=C1*(1-(M-INT(M)))
9320  LET N4=INT(M-S)
9322  LET N5=M-S-N4
9326  LET C=C1
9328  LET I=K2/2
9330  LET A=R1
9332  GOSUB 9634
9334  LET A3=A9
9336  LET P3=P
9338  LET C7=INT(M)-INT(M-S)
9340  LET B3=B1-D1*C7
9354  LET M=M1*2+M3/6
9356  LET A1=C1*(1-(M-INT(M)))
9358  LET N4=INT(M-S)
9360  LET N5=M-S-N4
9362  LET C=C1
9364  LET I=K2/2
9366  LET A=R1
9368  GOSUB 9634
9370  LET A3=A9
9372  LET P3=P
9374  LET C7=INT(M)-INT(M-S)
9376  LET B5=P1-D5*C7
9388  LET M=M2*2+M4/6
9389  LET A2=C2*(1-(M-INT(M)))
9390  LET N4=INT(M-S)
9392  LET N5=M-S-N4
9394  LET I=K1/2
9396  LET A=R2
9398  GOSUB 9634
9400  LET A4=A9
9402  LET P4=P
9404  LET C8=INT(M)-INT(M-S)
9406  LET B4=P2-D2*C8
9420  LET P9=P1
9422  LET B9=B1
9424  LET T8=T3
9426  LET T9=T4
9428  GOSUB 9646
9430  LET G1=G
9432  LET P9=P3
9434  LET B9=B3
9436  LET T8=T5
9438  LET T9=T6
9440  GOSUB 9646
9442  LET G3=G
9444  LET P9=P3
9446  LET B9=B5
9448  LET T8=T5
9450  LET T9=T6
9452  GOSUB 9646
9454  LET G9=G
9456  LET P9=P4
9458  LET B9=B4
9460  LET T8=T5
9462  LET T9=T6
9464  GOSUB 9646
9466  LET G4=G
9468  LET H1=P1-G1+A1*(1-T1)
9470  LET H3=P3-G3+A3*(1-T1)
9472  LET H5=P3-G9+A3*(1-T1)
9474  LET H4=P4-G4+A4*(1-T2)
9476  LET M=M1*2+M3/6
9478  LET K=1
9480  IF Z1 <> 0 THEN 9484
9482  LET Z1=1
9484  LET M7=M-S-INT(M-S)
9486  LET M8=C7-1
9488  LET M9=M-INT(M)
9490  LET C=C3
9492  LET U1=P1+A1*(1-T1)
9494  LET U2=H3
9496  GOSUB 9656
9498  LET Y5=2*(EXP(Y)-1)
9500  LET L[Z1,K]=((INT(Y5*10000+.5))/100)
9502  LET W3=0
9504  FOR I=1 TO M8
9506  LET W3=(W3+C)*(1+Y9/2)
9508  NEXT I
9510  LET W3=(W3+C)*(1+Y9/2)^(1-M7)
9512  LET H9=H3+W3
9514  LET K=K+3
9516  LET L[Z1,K]=H9
9518  GOSUB 9630
9520  LET N1=H1/(P1+A1*(1-T1))
9522  LET H5=H5*N1
9524  LET M=M1*2+M3/6
9526  LET M7=M-S-INT(M-S)
9528  LET M8=C7-1
9530  LET M9=M-INT(M)
9532  LET C=N1*C5
9534  LET U1=P1+A1*(1-T1)
9536  LET U2=H5
9538  GOSUB 9656
9540  LET Y7=2*(EXP(Y)-1)
9542  LET K=K-2
9544  LET L[Z1,K]=((INT(Y7*10000+.5))/100)
9546  LET W5=0
9548  FOR I=1 TO M8
9550  LET W5=(W5+C)*(1+(Y9/2))
9552  NEXT I
9554  LET W5=(W5+C)*(1+(Y9/2))^(1-M7)
9556  LET H7=H5+W5
9558  LET K=K+3
9560  LET L[Z1,K]=H7
9562  GOSUB 9630
9564  LET N2=H1/(P2+A2*(1-T2))
9566  LET H4=H4*N2
9568  LET M=M2*2+M4/6
9570  LET M7=M-S-INT(M-S)
9572  LET M8=C8-1
9574  LET M9=M-INT(M)
9576  LET C=N2*C4
9578  LET U1=P1+A1*(1-T1)
9580  LET U2=H4
9582  GOSUB 9656
9584  LET Y8=2*(EXP(Y)-1)
9586  LET K=K-2
9587  LET L[Z1,K]=((INT(Y8*10000+.5))/100)
9588  LET W4=0
9590  FOR I=1 TO M8
9592  LET W4=(W4+C)*(1+(Y9/2))
9594  NEXT I
9596  LET W4=(W4+C)*(1+(Y9/2))^(1-M7)
9598  LET H6=W4+H4
9600  LET K=K+3
9602  LET L[Z1,K]=H6
9604  GOSUB 9630
9606  GOTO (Z+1) OF 9688,9624,9616,9608,9688
9608  NEXT K2
9610  LET K2=Y3
9612  LET Z8=Z1
9616  NEXT K1
9618  LET K1=Y4
9620  LET Z8=Z1
9622  GOTO 9628
9624  NEXT S
9626  LET Z8=Z1
9628  GOTO 9718
9630  LET L[Z1,K]=INT(L[Z1,K]*100+.5)/100
9632  RETURN 
9634  LET V1=C*(1-(1+I)^(-N4))/I
9636  LET V2=A/(1+I)^N4
9638  LET Z9=(1+I)^N5-1
9640  LET P=((V1+V2+C)/(1+Z9))-C*(1-N5)
9642  LET A9=C*(1-N5)
9644  RETURN 
9646  IF P9>B9 THEN 9652
9648  LET G=T8*(P9-B9)
9650  GOTO 9654
9652  LET G=T9*(P9-B9)
9654  RETURN 
9656  LET Y=.0001
9658  GOSUB 9670
9660  LET D=P-(V1+V2)
9662  IF ABS(D/V3)<.000005 THEN 9668
9664  LET Y=Y-D/V3
9666  GOTO 9658
9668  RETURN 
9670  LET P=U1
9672  LET V1=V3=0
9674  LET V2=U2*EXP(Y)^(-M9-M8+M7-1)
9676  FOR J=0 TO M8
9678  LET V1=V1+C*(EXP(Y))^(-J-M9)
9680  LET V3=V3+C*(J+M9)*EXP(Y)^(-J-M9)
9682  NEXT J
9684  LET V3=V3+V2*(M8+1+M9-M7)
9686  RETURN 
9688  PRINT 
9690  PRINT 
9692  PRINT "   YIELD TO SALE DATE A/T IF OLD BOND KEPT:";
9694  PRINT ((INT(100000.*Y5+.000005))/100000.)*100
9696  PRINT "   YIELD TO SALE DATE A/T ON TAX SWITCH:";
9698  PRINT ((INT(100000.*Y7+.000005))/100000.)*100
9700  PRINT "   YIELD TO SALE DATE A/T ON SWITCH TO NEW BOND:";
9702  PRINT ((INT(100000.*Y8+.000005))/100000.)*100
9704  PRINT 
9706  PRINT 
9708  PRINT "   TERMINAL VALUE IF OLD BOND KEPT: $";((INT(H9*199+.5))/100)
9710  PRINT "   TERMINAL VALUE OF TAX SWITCH   : $";((INT(H7*100+.5))/100)
9712  PRINT "   TERMINAL VALUE OF SWITCH TO NEW BOND: $";((INT(H6*100+.5))/100)
9714  PRINT 
9716  GOTO 9804
9718  PRINT 
9720  IF Z=1 THEN 9734
9722  IF Z=2 THEN 9742
9724  LET D$="YIELD"
9726  LET N$="(OLD BOND)"
9728  PRINT "SENSITIVITY OF YIELD AND TERMINAL VALUES TO ";D$;" AT TERMINAL DATE."
9730  PRINT "(SPREAD HELD CONSTANT)."
9732  GOTO 9748
9734  LET D$="TERM. DATE"
9736  LET N$="(IN YEARS)"
9738  PRINT "SENSITIVITY OF YIELD AND TERMINAL VALUE TO ";D$;" IN YEARS HENCE."
9740  GOTO 9748
9742  LET D$="SPREAD"
9744  LET N$="(IN BASIS PTS.)"
9745  PRINT "SENSITIVITY OF YIELD AND TERMINAL VALUE TO ";D$" AT TERMINAL DATE."
9746  PRINT "(OLD BOND YIELD HELD CONSTANT)."
9748  PRINT 
9750  PRINT D$;TAB(13);"YIELD TO TERMINAL DATE"
9752  PRINT N$
9754  PRINT 
9756  PRINT TAB(15);"OLD BOND";TAB(30);"TAX SW.";TAB(45);"NEW BOND"
9758  FOR I=1 TO Z8
9760  PRINT A[I];
9762  LET Z0=15
9764  FOR J=1 TO 3
9766  PRINT TAB(Z0);L[I,J];
9768  LET Z0=Z0+15
9770  NEXT J
9772  PRINT 
9774  NEXT I
9776  PRINT 
9778  PRINT D$;TAB(13);"TERMINAL VALUE IN DOLLARS."
9780  PRINT N$
9782  PRINT TAB(15);"OLD BOND";TAB(30);"TAX SW.";TAB(45);"NEW BOND"
9784  FOR I=1 TO Z8
9786  PRINT A[I];
9788  LET Z0=15
9790  FOR J=4 TO 6
9792  PRINT TAB(Z0);L[I,J];
9793  LET Z0=Z0+15
9794  NEXT J
9796  PRINT 
9798  NEXT I
9800  PRINT 
9802  PRINT 
9804  GOTO 9230
9878  PRINT 
9900  DATA 90,95,3,3,0,100,.5
9901  DATA 85,5,30,10,100,.45,2,0
9902  DATA .05,.045,.25,.25,.33,.33,.33,.33,.035
9999  END 
