NPER Function (Calligra Sheets)
Solve payment periods with Calligra NPER. Check payment signs, beginning/end timing, zero-rate behavior, fractional results and unguarded nonfinite boundaries.
Verification status: 20 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
Domain caution: a zero-rate, zero-payment case returned numeric Infinity or NaN in the tested 25.04.2 engine. The source does not enforce a complete financial domain or restrict Type to 0/1.
Quick answer: =NPER(.01;-100;1000) gives approximately 10.588644459423 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 NPER returns
NPER solves the number of equal payment periods for a constant periodic rate, payment, present value and target future value. Receipts and payments need opposite signs in an ordinary financing model. Its result can be fractional. Function-specific official reference.
Syntax and arguments
=NPER(rate;payment;presentValue[;futureValue[;type]])
Rate, payment and present value are required. Future value defaults to 0; Type defaults to 0. Type>0 selects beginning-of-period payments, while zero or negative Type selects end-of-period payments. For portable formulas, explicitly use 0 or 1. Brackets indicate optional arguments and are not entered in the formula. 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 |
|---|---|---|
=NPER(.01;-100;1000) |
10.588644459423 |
10.588644459423 |
=NPER(.01;-100;1000;0;1) |
10.478145085117 |
10.478145085117 |
=NPER(.005;-50;1000) |
21.124739598584 |
21.124739598584 |
=NPER(0;-100;1000) |
10 |
10 |
=NPER(.1;0;-100;200) |
7.272540897342 |
7.272540897342 |
=NPER(.1;0;-100;161.051) |
5 |
5 |
=NPER(.02;-100;500;0;0) |
5.320532173938 |
5.320532173938 |
=NPER(.01;-50;500;-100) |
8.558289125953 |
8.558289125953 |
Practical worksheet
At 1% per month, present value 1000 and end-of-month payment −100, =NPER(.01;-100;1000) returns approximately 10.588644459423 months. Beginning payments give approximately 10.478145085117. A fractional period is the formula solution, not a ready-made final partial-payment schedule.
At zero rate with the same present value and payment, ten periods repay 1000. The zero-rate branch solves −(presentValue+futureValue)/payment. A positive payment with positive present value instead produced a negative period count in the tested data, illustrating why cash-flow signs matter.
Advanced interpretation and checks
With no periodic payments, growing 100 to 200 at 10% takes approximately 7.272540897342 periods. The signed inputs are presentValue=−100 and futureValue=200. The executed reconstruction below returns approximately 200.
For an ordinary repayment worksheet, keep the rate unit aligned with the payment interval and independently construct the balance recurrence. If full periods are required, determine a final adjusted payment rather than blindly treating a rounded period count as an exact amortization solution.
The executed advanced check was:
=100*1.1^NPER(.1;0;-100;200)
Its engine result was 200.
Boundaries and troubleshooting
The source uses logarithms for nonzero rates without comprehensive argument checks. Rate −1 happened to return zero for the tested repayment case; that is outside the intended rate>−1 model. Zero rate and zero payment returned nonfinite numeric values with no engine error flag.
Type 2 behaves like Type 1, and Type −1 behaves like Type 0. Numeric rate text is parsed; nonnumeric rate becomes zero, potentially producing a plausible ten-period result. Nonnumeric payment becomes zero and may produce Infinity. Incorrect arity gives #VALUE!. Check input types, rate domain, finite output and a reconstructed balance.
| Formula | Engine result |
|---|---|
=NPER(0;0;1000) |
−Infinity |
=NPER(0;0;0) |
NaN |
=NPER(-1;-100;1000) |
0 |
=NPER(.01;100;1000) |
-9.578594039813 |
=NPER(.01;-100;1000;0;2) |
10.478145085117 |
=NPER(.01;-100;1000;0;-1) |
10.588644459423 |
=NPER(".01";-100;1000) |
10.588644459423 |
=NPER("abc";-100;1000) |
10 |
=NPER(.01;"abc";1000) |
−Infinity |
=NPER(.01;-100) |
#VALUE! |
=NPER(.01;-100;1000;0;0;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.