;;;; Mortgage Calculators #| Formulas: P = payment PV = Present Value r = rate per period n = number of periods Find payments P = (r(PV)) / (1-(1+r)^-n) Find total P = (r(PV)) / (1-(1+r)^-n) P * (1-(1+r)^-n) = r * PV (P * (1-(1+r)^-n) / r = PV Find rate TODO Find payments TODO |# (defun find-payments (loan-total rate number-of-payments) "Generic payment calculation" (/ (* rate loan-total) (- 1 (expt (+ 1 rate) (* number-of-payments -1))))) (defun find-monthly-payments(loan-total rate number-of-payments) "Monthly payment by loan/rate/number of years" (find-payments loan-total (/ rate 12) (* number-of-payments 12))) (defun find-monthly-payment-total-per-year (loan-total rate number-of-payments) "Total monthly payments per year" (* (find-monthly-payments loan-total rate number-of-payments) 12)) ;; fixme: add function to take monthly-payments rate num-of-payments (defun find-biggest-loan (payments rate number-of-payments) "Generic loan calculation" (/ (* payments (- 1 (expt (+ 1 rate) (* -1 number-of-payments)))) rate)) (defun find-biggest-loan-monthly (payments rate number-of-payments) "Largest loan by payments/interest rate/number of years" (find-biggest-loan payments (/ rate 12) (* number-of-payments 12)))