lib/exonio/financial.rb in exonio-0.5.3 vs lib/exonio/financial.rb in exonio-0.5.4

- old
+ new

@@ -48,21 +48,23 @@ # Calculates the number of payment periods for an investment based on # constant-amount periodic payments and a constant interest rate. # # @param rate [Float] The interest rate as decimal (not per cent) per period - # @param pmt [Float] The number of payments to be made - # @param pv [Float] The present value + # @param pmt [Float] The payment amount made each period + # @param pv [Float] The present value of the payments # @param fv [Float] The future value remaining after the final payment has been made # @param end_or_begining [Integer] Whether payments are due at the end (0) or # beggining (1) of each period # # @return [Float] # # @example # Exonio.nper(0.07 / 12, -150, 8000) # ==> 64.07334877066185 # def nper(rate, pmt, pv, fv = 0, end_or_beginning = 0) + return (-pv - fv) / pmt if rate.zero? + z = pmt * (1 + rate * end_or_beginning) / rate temp = Math.log((-fv + z) / (pv + z)) temp / Math.log(1 + rate) end