DURATION and PDURATION in Calligra Sheets
Find compound-growth periods with Calligra DURATION or PDURATION. Check fractional periods, rate and sign limits, and the distinction from bond duration.
Verification status: 21 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
Quick answer: =DURATION(.1;100;200) gives approximately 7.272540897342 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 DURATION returns
DURATION returns the number of constant-growth periods needed to move from present value to future value: LN(future/present)/LN(1+rate). Calligra’s separate DURATION_ADD is the bond-duration function. PDURATION is also registered to this compound-growth callback. Function-specific official reference.
Syntax and arguments
=DURATION(ratePerPeriod;presentValue;futureValue)
Exactly three arguments are required. Rate is per period and must be positive in this implementation. For an ordinary growth model, use positive present and future amounts expressed on the same scale. 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 |
|---|---|---|
=DURATION(.1;100;200) |
7.272540897342 |
7.272540897342 |
=DURATION(1;100;800) |
3 |
3 |
=DURATION(.05;100;100) |
0 |
0 |
=DURATION(.01;1000;1100) |
9.578594039813 |
9.578594039813 |
=DURATION(.02;500;1000) |
35.002788781147 |
35.002788781147 |
=DURATION(.1;100;300) |
11.526704607248 |
11.526704607248 |
=DURATION(.5;100;225) |
2 |
2 |
=DURATION(.025;1000;2000) |
28.071034525939 |
28.071034525939 |
Practical worksheet
Growing 100 to 200 at 10% per period takes approximately 7.272540897342 periods. At annual compounding that unit is years; at a monthly 10% rate it would be months. The function does not choose the period unit for you.
Whole-period decisions need an explicit interpretation. At 10%, 100 grows to 194.87171 after seven periods and 214.358881 after eight. Reaching at least 200 at whole-period boundaries therefore takes eight periods, even though the continuous exponent solution is fractional.
Advanced interpretation and checks
The exponential reconstruction 100*1.1^DURATION(.1;100;200) returns approximately 200, with a small retained floating-point residual. At a 100% rate, growth from 100 to 800 takes exactly three periods; at 50%, growth from 100 to 225 takes two.
Equal positive present and future values give zero. A smaller positive future amount gives a negative mathematical duration for a positive rate. That describes moving backward along the same growth curve, not a positive waiting time for a growing investment.
The executed advanced check was:
=100*1.1^DURATION(.1;100;200)
Its engine result was 200.
Boundaries and troubleshooting
Zero or negative rate gives #VALUE!. A zero present or future value gives #DIV/0!; opposite signs give #VALUE!. Two negative amounts with a positive ratio are accepted by the source and tested engine, although they are outside the ordinary positive-amount interpretation.
Numeric rate text can be parsed; nonnumeric rate becomes zero and errors. Nonnumeric present value becomes zero and reaches #DIV/0!. Incorrect arity is #VALUE!. This function has no periodic-payment argument, and its three inputs do not describe a coupon-bond sensitivity.
| Formula | Engine result |
|---|---|
=DURATION(0;100;200) |
#VALUE! |
=DURATION(-.1;100;200) |
#VALUE! |
=DURATION(.1;0;200) |
#DIV/0! |
=DURATION(.1;100;0) |
#DIV/0! |
=DURATION(.1;-100;200) |
#VALUE! |
=DURATION(.1;-100;-200) |
7.272540897342 |
=DURATION(.1;200;100) |
-7.272540897342 |
=DURATION(".1";100;200) |
7.272540897342 |
=DURATION("abc";100;200) |
#VALUE! |
=DURATION(.1;"abc";200) |
#DIV/0! |
=DURATION(.1;100) |
#VALUE! |
=DURATION(.1;100;200;0) |
#VALUE! |
Official evidence and precision scope
- Function-specific implementation
- Versioned function help
- Duration Alias helper
- Arithmetic helper
- Logarithm helper
- Conversion helper
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.
PDURATION alias
=PDURATION(ratePerPeriod;presentValue;futureValue) is an active alias for this compound-growth calculation in Calligra Sheets. Its 26.08.2 registration requires exactly three arguments, matching DURATION’s registration, with the same argument-handling settings and calculation. Both therefore use the rate, amount and sign rules described here.
PDURATION is already registered in Calligra 2.4.0 source. Its first introduction is unknown, and no retirement is established. This alias relationship is source-verified; the retained execution cases in this guide use DURATION, not PDURATION. Neither spelling describes coupon-bond duration in Calligra; that is the separate DURATION_ADD identity. Import/storage-name mappings require their own compatibility checks.