1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        FINFLO:   CALCULATES PRESENT VALUE - STREAM OF CASH FLOWS
4  REM
5  REM        36711 REV  A   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8999  REM-FINFLO-12/30/69-RICHARDSON-PROGRAM
9000  PRINT "DO YOU WANT INSTRUCTIONS";
9001  DIM Q$[9]
9002  INPUT Q$
9003  IF Q$="YES" THEN 9099
9004  GOTO 9170
9099  PRINT 
9100  PRINT "THIS PROGRAM CALCULATES THE PRESENT VALUE OF A STREAM OF CASH"
9110  PRINT "FLOWS.  THE ASSUMPTION IS MADE THAT THE FLOWS OCCUR AT THE END"
9120  PRINT "OF EACH OF THE PERIODS AFTER THE INITIAL PERIOD WHEN THE INVESTMENT"
9130  PRINT "IS MADE.  EACH PERIOD IS DEFINED AS ONE YEAR UNLESS THE COST OF"
9140  PRINT "CAPITAL PERCENTAGE AND NUMBER OF PERIODS ARE ADJUSTED ACCORDINGLY."
9150  PRINT "THIS PROGRAM WILL CALCULATE ALL RATES OF RETURN BETWEEN ZERO AND"
9160  PRINT "ONE HUNDRED PERCENT WHICH EQUATE THE P.V. TO THE INITIAL INVESTMENT."
9170  PRINT 
9200  DIM S[99],A$[4]
9201  LET R3=0
9205  PRINT "WHAT IS THE INITIAL INVESTMENT IN PERIOD 0";
9210  INPUT A
9215  IF A <= 0 THEN 9230
9220  PRINT "THIS PROGRAM ASSUMES AN INITIAL OUTLAY FOR THE INVESTMENT"
9225  PRINT "THE SIGN HAS BEEN CHANGED TO REFLECT THIS CONDITION"
9230  LET A=ABS(A)
9235  PRINT "FOR HOW MANY PERIODS DO YOU WISH TO ENTER CASH FLOWS, PERIOD 1 ON";
9240  INPUT B
9245  PRINT '10'10"PERIOD #","CASH FLOW"
9250  PRINT "********","*********"
9255  FOR X=1 TO B
9260  PRINT "   ";X,
9265  INPUT S[X]
9270  NEXT X
9275  PRINT 
9280  PRINT "ENTER COST OF CAPITAL IN PERCENT";
9285  INPUT D
9290  LET D=D/100
9295  PRINT '10'10"DO YOU WANT A LISTING OF THE P.V. IN EACH PERIOD";
9300  INPUT A$
9305  IF A$="YES" THEN 9320
9310  LET Q=0
9315  GOTO 9325
9320  LET Q=1
9325  LET E=0
9330  IF Q=0 THEN 9340
9335  PRINT 
9336  PRINT "PERIOD #","  P.V.  "
9337  PRINT "********","********"
9340  FOR X=1 TO B
9345  LET P=S[X]/((1+D)^X)
9350  LET E=E+P
9355  IF Q=0 THEN 9365
9360  PRINT X,P
9365  NEXT X
9370  PRINT 
9375  LET L=E-A
9380  PRINT "NET PRESENT VALUE OF ALL FLOWS IS $ ";L
9385  FOR R1=0 TO .99 STEP .01
9390  LET E=0
9395  FOR X=1 TO B
9400  LET P=S[X]/((1+R1)^X)
9405  LET E=E+P
9410  NEXT X
9415  LET Q3=R1
9420  IF E=A THEN 9630
9425  IF E<A THEN 9475
9430  IF Q=0 THEN 9465
9435  IF Q=1 THEN 9500
9440  LET Q=1
9445  LET Q2=0
9450  LET R1=R1-.01
9455  LET Q1=R1
9460  GOTO 9515
9465  LET Q=1
9470  GOTO 9500
9475  IF Q=0 THEN 9495
9480  IF Q=-1 THEN 9500
9485  LET Q=-1
9490  GOTO 9445
9495  LET Q=-1
9500  NEXT R1
9505  IF R3=0 THEN 9665
9510  GOTO 9999
9515  FOR R2=Q1 TO (Q1+.01) STEP .0001
9520  LET E=0
9525  FOR X=1 TO B
9530  LET P=S[X]/((1+R2)^X)
9535  LET E=E+P
9540  NEXT X
9545  IF E=A THEN 9630
9550  IF E<A THEN 9590
9555  IF Q2=0 THEN 9580
9560  IF Q2=1 THEN 9620
9565  LET Q2=1
9570  LET Q3=R2
9575  GOTO 9630
9580  LET Q2=1
9585  GOTO 9620
9590  IF Q2=0 THEN 9615
9595  IF Q2=-1 THEN 9620
9600  LET Q2=-1
9605  LET Q3=R2
9610  GOTO 9630
9615  LET Q2=-1
9620  NEXT R2
9625  GOTO 9500
9630  IF R3>0 THEN 9645
9635  PRINT '10'10"THE CALCULATED RATES OF RETURN BETWEEN 0% AND 100% ARE:"
9640  LET R3=1
9645  PRINT Q3*100;" %";TAB(12);
9650  PRINT "THE P.V. AT THIS RATE OF RETURN IS $ ";E
9655  LET Q2=0
9660  GOTO 9500
9665  PRINT "THE RATE OF RETURN FOR THESE FLOWS EXCEEDS 100 PERCENT"
9999  END 
