Contact

ODDLPRICE Function (Calligra Sheets)

Financial Advanced Calligra Sheets

Calculate an odd-final-period bond price with Calligra day-ratio examples, basis comparisons and safe frequency limits.

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

Quick answer: =ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2) is independently expected to return approximately 100.303278689.

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 syntax

ODDLPRICE calculates price per 100 of redemption basis for a security with an odd final coupon period. It is intended for settlement after the last regular interest date and before maturity. It does not model an odd first coupon, arbitrary irregular payments or a full series of independently supplied cash flows.

=ODDLPRICE(settlement; maturity; last_interest; rate; yield; redemption; frequency[; basis])
Argument Meaning and default
settlement Valuation date, strictly after last_interest
maturity Final redemption date, strictly after settlement
last_interest Last interest date before the odd final period
rate Annual coupon rate, e.g. 0.06 for 6%
yield Required annual yield, e.g. 0.05 for 5%
redemption Redemption amount per 100, normally 100
frequency Intended payments per year; use 1, 2 or 4
basis Optional day-count code, default 0

The function accepts seven or eight arguments. Use basis 0 for US 30/360, 1 for actual/actual, 2 for actual/360, 3 for actual/365 and 4 for European 30/360. These labels do not establish that every function uses the same underlying day-count implementation. Date boundaries, leap days and coupon schedules need their own checks. Use actual spreadsheet dates rather than ambiguous text such as 1/4/25.

Step-by-step: a seven-month final period

  1. Put =DATE(2025;1;1) in A2 for the last interest date.
  2. Put =DATE(2025;4;1) in B2 for settlement and =DATE(2025;8;1) in C2 for maturity.
  3. Use coupon 0.06, redemption 100, frequency 2 and basis 0.
  4. Supply annual yield 0.05. The independent price expectation is 100.303278688525 per 100.

The regular six-month interval is January to July; maturity arrives one month later. The date-ratio helper splits the odd period at the regular boundary. In basis 0, the ratios measured in coupon periods are x1 = 90/180 = 0.5 from last interest to settlement, x2 = 210/180 = 7/6 from last interest to maturity, and x3 = 120/180 = 2/3 from settlement to maturity.

With frequency f, coupon rate r, redemption R, annual yield y and clean price P, the inspected implementation uses these mutually inverse expressions:

P = (R*f + 100*r*(x2 − x1*(1+y*x3/f))) / (y*x3+f)
y = (f*(R−P) + 100*r*(x2−x1)) / (x3*P + 100*r*x1*x3/f)

Substituting the three fractions above reproduces the example without calling a spreadsheet pricing function. The subtraction involving x1 accounts for accrued coupon in the clean-price relation. Keep quoted price/redemption and coupon amounts on the same 100-unit basis; a holding’s total face amount is a separate scaling calculation.

Advanced comparison: actual/365 across a coupon boundary

Change only basis to 3. Actual days from January 1 to April 1 are 90; January 1 to August 1 is 212; April 1 to August 1 is 122. The helper uses 365/2 = 182.5 as each coupon-period denominator. Thus x1, x2 and x3 are 90/182.5, 212/182.5 and 122/182.5, respectively. The July boundary contributes 181 actual days before July 1 and 31 after it.

At yield 0.05 this gives price 100.304433690288. At the original basis-0 price it gives yield 0.050034517526934. A basis change changes the economic equation, so preserving an old price while changing day count need not preserve yield. This also shows why replacing the helper’s denominator with an actual half-year’s 181 days would produce a different answer. Basis 1 follows actual coupon-period lengths; it is not simply basis 3 with a new label.

Errors, safe inputs and limitations

Yield and coupon rate must both be strictly positive; the source rejects zero as well as negative values. Equal or reversed last-interest/settlement or settlement/maturity boundaries return internal errorVALUE. Redemption positivity is not comprehensively checked by the wrapper.

Frequency validation is marked TODO. The implementation repeatedly adds 12/frequency months and the date-ratio helper contains a loop. Unsupported, zero or negative frequencies can cause invalid arithmetic or nonprogressing date iteration. Use valid positive 1, 2 or 4 only; do not use malformed frequencies as an ordinary error-check exercise. The examples here all use 2.

For month-end dates, the coupon helpers enable end-of-month behavior. The day-count helper supports different 30/360 variants and actual-day bases, and its unsupported-basis handling is not a guarantee of a useful error. Use documented basis 0–4 and verify important boundaries against your security’s own terms. Do not assume the returned price includes trading fees, taxes or the total cost of a position.

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
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2) 100.30327868852459
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2;4) 100.30327868852459
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2;3) 100.30443369028767
=ODDLPRICE(DATE(2025;1;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;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
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2) 100.3032786885
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2;4) 100.3032786885
=ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2;3) 100.3044336903
=ODDLPRICE(DATE(2025;1;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2) #VALUE!

Calligra Sheets ODDLPRICE results with B2 selected, displaying 100.3032786885

Calligra Sheets 25.04.2: selected cell B2 evaluates =ODDLPRICE(DATE(2025;4;1);DATE(2025;8;1);DATE(2025;1;1);0.06;.05;100;2) to 100.3032786885. Column B contains calculated results and column C shows entered formula text.

The registered alternate spelling is COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETODDLPRICE. It uses the same handler; it is not a separate calculation. 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.