Contact

DURATION_ADD Function (Calligra Sheets)

Financial Advanced Calligra Sheets

Calculate bond duration in Calligra Sheets with cash-flow examples, units and the released optional-basis argument defect.

Verification status: See the evidence and test scope described in this guide. How formula examples are checked

Quick answer: =DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2) is independently expected to return approximately 1.91520904486.

Availability and verification scope

  • Introduced: Original introduction release is not established. A checked release is not an introduction date.
  • Source checked: Calligra Sheets 26.08.2, first-party implementation retrieved on October 18, 2026.
  • Retired or deprecated: Neither is established. The function remains registered in the inspected source.
  • Numerical evidence: The selected formulas below were executed in Calligra Sheets 25.04.2 on October 18, 2026, and their formulas and results read back from native-saved ODS files. Independent calculations provide separate checks. Version 26.08.2 was source-checked only; no general import/export or cross-version runtime compatibility is established.
  • Entry style: English names, semicolon separators, decimal points and DATE(year;month;day) values. Brackets in syntax indicate optional arguments; do not type them.

Purpose and a critical basis limitation

DURATION_ADD calculates a Macaulay-style duration: the present-value-weighted average time to receive a bond’s scheduled payments. The output is in years, not a currency amount or a percentage yield.

Implementation defect: when a sixth argument is supplied, this release reads the basis from argument four, the yield, instead of argument six. For the example yield 0.05, that conversion produces basis 0. Consequently an explicit final 3 does not select actual/365. Omitting the sixth argument also uses basis 0. Do not use this function to assert a nonzero-basis result merely because the formula contains that basis number. This defect is shared by DURATION_ADD and MDURATION. Source.

Calligra’s separate DURATION(rate;present_value;future_value) and PDURATION calculate compound-growth periods. They are not aliases of DURATION_ADD. In particular, the long COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETDURATION spelling is registered to that three-argument growth handler, not this bond-duration handler. A name translation from another product can therefore change the calculation completely.

Syntax and arguments

=DURATION_ADD(settlement; maturity; coupon; yield; frequency[; basis])
Argument Meaning
settlement Date from which the remaining cash flows are valued
maturity Final payment date, after settlement
coupon Annual coupon rate, as a decimal; 0.06 means 6%
yield Annual yield, as a decimal, compounded by payment frequency
frequency Intended coupons per year; use conventional positive 1, 2 or 4
basis Documented optional day-count basis, default 0; affected by the argument-read defect above

The registration accepts five or six arguments. Both rates must be nonnegative in this implementation. Frequency is converted to an integer, but a TODO remains for frequency validation. Keep frequency positive and conventional; do not probe zero, negative or unsupported values in a working financial model.

Step-by-step: a two-year coupon bond

  1. On a fresh worksheet, put =DATE(2025;1;1) in A2 and =DATE(2027;1;1) in B2.
  2. Put 0.06 in C2, 0.05 in D2 and 2 in E2.
  3. Enter =DURATION_ADD(A2;B2;C2;D2;E2) in F2.
  4. Format F2 as a number. The independent expectation is 1.915209044858 years.

The model assumes redemption of 100. A 6% annual coupon paid twice yearly is 3 per half-year, so the four cash flows are 3, 3, 3 and 103 at 0.5, 1, 1.5 and 2 years. Discount each by 1.025 raised to payment number. Sum each discounted cash flow times its time in years, and divide by the sum of discounted cash flows. The resulting weighted average is Macaulay-style duration. This independent cash-flow construction explains the units and avoids treating a plausible-looking answer as sufficient evidence.

Practical use and interpretation

Compare a coupon bond with a zero-coupon bond of the same maturity. With coupon 0, all value arrives at maturity, so the independent Macaulay duration is exactly 2 years. The coupon bond has a shorter duration because some value arrives earlier. To estimate small yield sensitivity, convert Macaulay duration to modified duration by dividing by 1 + yield/frequency.

For off-coupon settlement, the shared helper uses YEARFRAC(settlement;maturity;basis)*frequency − number_of_coupons as a time offset. That source rule is not proof that all market day-count and accrued-interest conventions are reproduced. Validate a dated cash-flow schedule independently, especially around month ends, before interpreting the output as a risk measure.

Errors and edge cases

Negative coupon or yield explicitly returns internal errorVALUE, conventionally displayed as #VALUE!; the negative-yield example below displayed #VALUE! in the native application. Zero coupon and zero yield are not rejected by that particular guard. The wrapper does not comprehensively validate dates or frequency before calling coupon-count and duration helpers. Invalid inputs can therefore propagate incorrectly rather than producing a helpful error.

The sixth-argument defect means basis-comparison formulas can silently return the same result. Equality is evidence of this implementation behavior, not evidence that actual/365 and 30/360 are interchangeable. Do not extrapolate the 0.05-yield example to arbitrary yield values: the mistaken integer conversion itself depends on the value supplied.

Reproducible comparison cases

Enter each formula on a fresh worksheet. Format numeric results with at least ten decimal places before comparing; percentage formatting multiplies the displayed number by 100. The displayed errors for these selected formulas were also observed in the native application.

Formula Independent or source-derived expectation
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2) 1.915209044857622
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2;3) 1.915209044857622 — Sixth argument ignored; basis read from yield, which converts to zero here.
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0;0.05;2) 2.0
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;-0.05;2) #VALUE!

Native results in Calligra Sheets 25.04.2

The following selected formulas were recalculated in the native application. Display rounding can differ from the independent values above.

Formula Native displayed result
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2) 1.9152090449
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2;3) 1.9152090449
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0;0.05;2) 2.0000000000
=DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;-0.05;2) #VALUE!

Calligra Sheets DURATION_ADD results with B2 selected, displaying 1.9152090449

Calligra Sheets 25.04.2: selected cell B2 evaluates =DURATION_ADD(DATE(2025;1;1);DATE(2027;1;1);0.06;0.05;2) to 1.9152090449. Column B contains calculated results and column C shows entered formula text.

No alternate spelling is registered for this name. Matching names in other spreadsheet products do not guarantee matching argument order, day counts, validation or file-import behavior. This guide does not establish general XLSX/ODS round-trip compatibility. Check a small workbook with known results before relying on a migrated model.

Related guides: DURATION and PDURATION cover compound-growth periods; PMT handles equal periodic payments; DATE constructs date values. Bond duration and annualized yield are different quantities.

First-party references

References checked October 18, 2026. Numerical examples are spreadsheet calculations, not a recommendation to buy, sell or price a particular security without checking its contractual terms.