Contact

PV_ANNUITY Function (Calligra Sheets)

Financial Intermediate Calligra Sheets

Discount equal end-of-period payments with Calligra PV_ANNUITY. Check the cash-flow sum, annuity timing and the source’s zero-rate division limitation.

Verification status: 22 selected formulas were executed through the Calligra Sheets 25.04.2 calculation engine library. Exact outputs, mathematical references and source limitations are documented separately. Version 26.08.2 was source-checked only; no GUI-cell or import claim. How formula examples are checked

Zero-rate limitation: the tested Calligra 25.04.2 engine returns #DIV/0! at rate zero. The mathematical present-value limit is payment×periods; the unchanged 26.08.2 source does not implement that special branch.

Quick answer: =PV_ANNUITY(100;.1;3) gives approximately 248.685199098422 in the tested Calligra calculation engine.

Availability and version history

  • Introduced: First release not established; the name is present in Calligra 2.4.0 source.
  • Supported in: Calligra Sheets 26.08.2, with no retirement established.
  • Scope: Desktop Sheets with the Financial module. Examples use English semicolon-separated formulas.
  • Checked: October 14, 2026. Selected formulas ran through the official 25.04.2 engine library. Source and independent mathematics were checked. This is engine evidence, with no GUI-cell or import verification; 26.08.2 was source-checked only.

What PV_ANNUITY returns

PV_ANNUITY returns the present value of equal payments at each period end: payment×(1−(1+rate)^(-periods))/rate. It uses the payment’s sign, rather than automatically converting positive receipts to a negative present value. Function-specific official reference.

Syntax and arguments

=PV_ANNUITY(payment;ratePerPeriod;periods)

Exactly three arguments are required: payment, discount rate per period and periods. Use matching rate/payment intervals and an intended nonnegative integer payment count. Handle a validated zero-rate case separately. Registration and implementation.

Reproducible engine examples

The engine and mathematical columns are separate. Results are rounded to twelve decimal places, or thirteen significant digits in scientific notation for very small or large values. This is a display choice, not an accuracy guarantee.

Formula Engine result Independent mathematical reference
=PV_ANNUITY(100;.1;3) 248.685199098422 248.685199098422
=PV_ANNUITY(100;.05;5) 432.947667063082 432.947667063082
=PV_ANNUITY(100;.1;1) 90.909090909091 90.909090909091
=PV_ANNUITY(100;.1;0) 0 0
=PV_ANNUITY(100;.01;12) 1125.507747348463 1125.507747348463
=PV_ANNUITY(500;.02;10) 4491.292503121118 4491.292503121118
=PV_ANNUITY(0;.1;3) 0 0
=PV_ANNUITY(250;.08;4) 828.031710011083 828.031710011083

Practical worksheet

Three receipts of 100 at a 10% discount rate have present value approximately 248.685199098422. The independent cash-flow sum is 100/1.1+100/1.1^2+100/1.1^3. The first payment occurs one period after the valuation date.

Five receipts of 100 discounted at 5% give approximately 432.947667063082, less than their undiscounted total of 500. A zero payment with a nonzero rate gives zero, as does zero periods in the tested ordinary formula.

Advanced interpretation and checks

For the same rate and number of periods, future value equals present value times (1+rate)^periods. This identity links the two annuity formulas when their timing assumptions match. Payments at period beginnings instead have one less discount period, so multiply the end-of-period present value by 1+rate.

For the three-payment 10% example, the independent annuity-due value is approximately 273.553719008264. That is a separately derived timing adjustment, not an optional Type argument supported by PV_ANNUITY.

The executed advanced check was:

=PV_ANNUITY(100;.1;3)-100*(1/1.1+1/1.1^2+1/1.1^3)

Its engine result was 3.642919299551E-14.

Boundaries and troubleshooting

Exact zero rate gives #DIV/0!, including the tested zero-period case. The mathematical limit can be computed as payment×periods after validating the intended model. Rate −1 with positive periods also reaches division by zero because the discount base is zero.

Negative and fractional periods are not rejected, and fractional powers of a negative base can yield numeric NaN without the error flag. Numeric text is parsed, nonnumeric payment text becomes zero, and nonnumeric rate text errors through the zero divisor. Incorrect arity gives #VALUE!. Do not use a merely finite result as input validation.

Formula Engine result
=PV_ANNUITY(100;0;3) #DIV/0!
=PV_ANNUITY(100;0;0) #DIV/0!
=PV_ANNUITY(100;-.1;3) 371.742112482853
=PV_ANNUITY(100;-1;3) #DIV/0!
=PV_ANNUITY(100;-2;2.5) NaN
=PV_ANNUITY(100;.1;-2) -210
=PV_ANNUITY(100;.1;2.5) 212.014389053229
=PV_ANNUITY(-100;.1;3) -248.685199098422
=PV_ANNUITY("100";.1;3) 248.685199098422
=PV_ANNUITY("abc";.1;3) 0
=PV_ANNUITY(100;"abc";3) #DIV/0!
=PV_ANNUITY(100;.1) #VALUE!
=PV_ANNUITY(100;.1;3;0) #VALUE!

Official evidence and precision scope

The financial module and value-calculation helpers are byte-identical between the inspected 25.04.2 and 26.08.2 sources. That comparison supports the source discussion but does not establish later-version execution, GUI-cell behavior or other locales.