Contributor: RICK WHEAT


I use the following function to calculate present value:

function PresentValue(FV, IR, PMT : Real; N : Integer) : Real;
var
   IFactor, IFactor1, R1, R2 : Real;
begin
     {set values of variables}
     IFactor      := (IR / 1200.0);
     IFactor1     := (1.0 + IFactor);
     R1           := Exp(-N * LN(IFactor1));
     R2           := ((FV * IFactor) - (-PMT)) + ((Exp(N * LN(IFactor1))) * (-PMT));
     {calc the result}
     PresentValue := ((R1 * R2) / IFactor);
end;