Вы смотрели на функцию DecodeDate? Это не точно именно то, что вам нужно, но на ее основе можно сделать вашу функцию именно с нужной вам функциональностью.
Для величины Present:
function PresentValue(const cashflows : array of double; { отсортированные транзакции, начальный индекс - cashflows[0] }
n : integer; { количество транзакций в массиве } rate : double; { оценочный процент за истекший период } atbegin : boolean) : double; { true, если транзакция была в начале периода, false если в конце } var
i : integer; factor : double;begin
factor := (1 + rate / 100.0); result := 0; for i := n - 1 downto 0 do result := (result + cashflows[n]) / factor; if atbegin then result := result * factor; end;