ZERO_COUPON Function (Calligra Sheets)
Discount a single redemption with Calligra ZERO_COUPON. Reproduce face-value pricing, fractional time, zero-rate behavior and unguarded discount-base limits.
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
Quick answer: =ZERO_COUPON(1000;.1;2) gives approximately 826.446280991736 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 ZERO_COUPON returns
ZERO_COUPON returns faceValue/(1+annualRate)^years. It discounts one terminal redemption without intermediate coupon payments. The result is a present-value amount, not a return rate. Function-specific official reference.
Syntax and arguments
=ZERO_COUPON(faceValue;annualRate;years)
Exactly three arguments are required: redemption face value, decimal annual effective rate and years. The implementation evaluates real-valued years and adds no explicit financial-domain guards. Use a positive discount base and appropriate nonnegative time for an ordinary valuation. 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 |
|---|---|---|
=ZERO_COUPON(1000;.1;2) |
826.446280991736 |
826.446280991736 |
=ZERO_COUPON(1000;.05;10) |
613.913253540759 |
613.913253540759 |
=ZERO_COUPON(100;.06;1) |
94.339622641509 |
94.339622641509 |
=ZERO_COUPON(1000;0;5) |
1000 |
1000 |
=ZERO_COUPON(1000;.1;0) |
1000 |
1000 |
=ZERO_COUPON(1000;.1;.5) |
953.462589245592 |
953.462589245592 |
=ZERO_COUPON(500;.08;3) |
396.916120510085 |
396.916120510085 |
=ZERO_COUPON(1000;.02;20) |
672.971333108058 |
672.971333108058 |
Practical worksheet
A redemption of 1000 in two years discounted at 10% annually has value approximately 826.446280991736. Multiplying that price by 1.1² recovers 1000, apart from the stored rounding residual shown by the advanced check.
For 1000 in ten years at 5%, the model discounts all ten periods once. It does not subtract coupons because there are none. A zero rate gives the undiscounted face value, and zero time also gives face value in the tested cases.
Advanced interpretation and checks
For a half-year at 10%, the source evaluates the square root of 1.1 in the denominator. This fractional-exponent convention is mathematically explicit; it does not introduce a settlement calendar or day-count basis.
Rates and time can also be interpreted consistently in another period unit: a rate per half-year paired with a count of half-years gives the same single-payment model. When comparing with LEVEL_COUPON at coupon rate zero, use its marketRate/frequency and total coupon-period count. The quoted annual-rate labels must not hide a change of units.
The executed advanced check was:
=ZERO_COUPON(1000;.1;2)*1.1^2
Its engine result was 1000.
Boundaries and troubleshooting
Rate −1 and positive time gives #DIV/0!. Rate below −1 can produce a finite answer for integer time or numeric NaN for fractional time. The tested rate −2 and two periods returned face value, but that is outside the ordinary positive-discount-factor model.
Negative time compounds forward instead of discounting; negative face value retains its sign. Numeric face text is parsed, while nonnumeric face becomes zero and nonnumeric rate becomes zero. Incorrect arity gives #VALUE!. Validate the intended rate, time and input types. No accrued-interest, tax or external pricing convention is implemented by this three-argument formula.
| Formula | Engine result |
|---|---|
=ZERO_COUPON(1000;-.1;2) |
1234.567901234568 |
=ZERO_COUPON(1000;-1;2) |
#DIV/0! |
=ZERO_COUPON(1000;-2;2) |
1000 |
=ZERO_COUPON(1000;-2;.5) |
NaN |
=ZERO_COUPON(1000;.1;-2) |
1210 |
=ZERO_COUPON(-1000;.1;2) |
-826.446280991736 |
=ZERO_COUPON("1000";.1;2) |
826.446280991736 |
=ZERO_COUPON("abc";.1;2) |
0 |
=ZERO_COUPON(1000;"abc";2) |
1000 |
=ZERO_COUPON(1000;.1) |
#VALUE! |
=ZERO_COUPON(1000;.1;2;0) |
#VALUE! |
Official evidence and precision scope
- Function-specific implementation
- Versioned function help
- Arithmetic helper
- Power 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.