: discount-value2 ( rate period payment -- discounted-value ) [ ^ ] dip [ 1.0 swap / ] dip * ; :: discounted-payback-when ( rate investment cashflows -- period ) cashflows values [ :> ( pmt i ) rate i [ 1 + ] bi@ pmt discount-value2 ] map-index summation [ investment >= ] find drop ;