YIELDDISC Function (Gnumeric)
Calculate Gnumeric YIELDDISC’s annualized purchase-price return for a discounted security. Compare discount quotes, year fractions and positive-price guards.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: =YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100) has independently expected result 0.051282051282. This guide explains the calculation and its Gnumeric-specific date rules; the result was not observed in a running application.
Availability and evidence dates
- Introduced: First introduction is unknown from the inspected records.
- Documented support: Registered in Gnumeric 1.12.62. No retirement is established.
- Last functioning version: Unverified. Source registration is not a native application test.
- Dates and scope: Pinned official source was retained from the October 13–14, 2026 audit. This complete guide and independent calculations were checked October 15. There was no new source retrieval, native engine execution or GUI test.
What YIELDDISC calculates
YIELDDISC returns (redemption/price-1)/year_fraction. It divides the holding-period gain by the purchase price rather than by redemption, then annualizes using Gnumeric’s year-fraction helper. It is a simple annualized yield, not a compounded effective annual return. For a price below redemption, the purchase-price denominator makes this measure larger than the redemption-based discount quotation for the same controlled time fraction.
Syntax and arguments
=YIELDDISC(settlement,maturity,price,redemption,[basis])
price is the purchase price and redemption the maturity amount, on the same scale. Both must be strictly positive. Settlement and maturity are required dates, with settlement earlier. Optional basis defaults to 0. There is no coupon-rate argument.
Use valid worksheet dates produced by DATE, rather than locale-ambiguous text. The registration requires four numeric/date arguments and permits one additional basis argument. The shared basis converter truncates nonnegative fractional inputs below 6; use the documented integer values explicitly instead of relying on that conversion.
| basis | Official description | Important implementation scope |
|---|---|---|
| 0, default | US 30/360 | Use the specific helper described below; do not infer identical month-end rules in every financial function. |
| 1 | Actual days | The year denominator depends on the called helper. |
| 2 | Actual/360 | Actual elapsed days divided by 360. |
| 3 | Actual/365 | Actual elapsed days divided by 365. |
| 4 | European 30/360 | A 30/360 convention; helper details still matter. |
Reproducible worksheet
Create DiscountYield with B2 =DATE(2026,1,15), B3 =DATE(2026,7,15), B4 97.5, B5 100 and B6 0. B8 =YIELDDISC(B2,B3,B4,B5,B6) has expected result approximately 0.051282051282, or 5.1282051282%. For these mid-month dates the default year fraction is 180/360 = 0.5. B9 =B5/B4-1 is approximately 0.025641025641, and B10 =B9/0.5 agrees with B8.
Checked formulas and boundaries
Each row is independent and uses whole DATE values. Numeric results are source-derived reference expectations rounded to twelve decimal places where needed. Error results follow explicit callback guards, not a native error-display test.
| Formula | Independently expected result |
|---|---|
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100) |
0.051282051282 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,0) |
0.051282051282 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),95,100,0) |
0.105263157895 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),102,100,0) |
-0.039215686275 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),100,100,0) |
0 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),0,100,0) |
#NUM! |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,0,0) |
#NUM! |
=YIELDDISC(DATE(2026,1,15),DATE(2026,1,15),97.5,100,0) |
#NUM! |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,2) |
0.050998725032 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,3) |
0.051707040657 |
=YIELDDISC(DATE(2023,7,1),DATE(2024,6,30),1000,1100,1) |
0.100273972603 |
=YIELDDISC(DATE(2023,1,1),DATE(2025,1,1),1000,1100,1) |
0.049977200182 |
=YIELDDISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,6) |
#NUM! |
Advanced application and cross-check
Compare B11 =(B5-B4)/B5/0.5, which returns the discount quote 0.05. Replacing its denominator B5 with B4 changes the convention to purchase-price yield. With discount d and this same fraction t, the relationship is yield=d/(1-d*t): 0.05/(1-0.05*0.5) gives the result in B8. The inverse is d=yield/(1+yield*t). These identities require matching time fractions; do not apply them across two functions that count dates differently.
For actual/actual basis 1, settlement July 1, 2023 and maturity June 30, 2024 span 365 days but the inspected helper chooses a 366-day year denominator because the interval reaches February 29 of the leap end year. At price 1000 and redemption 1100, the reference result is approximately 0.100273972603. INTRATE’s settlement-year denominator gives 0.1 instead. A second basis-1 check from January 1, 2023 to January 1, 2025 uses 731 days and the helper’s average year length over calendar years 2023–2025, not a blanket fixed 365. This product-specific distinction should survive a workbook migration.
Calendar behavior in the inspected source
This callback calls the shared year-fraction helper, which obtains basis-aware elapsed days from GOffice. For actual/actual spans longer than one year it uses the average calendar-year length across all calendar years touched, including both endpoint years. For a span at most one year, it chooses 365 or 366 using the leap-year conditions shown in that helper. The actual/actual examples below explicitly exercise these branches. The 30/360 numeric controls use ordinary mid-month dates, so they do not assert a native month-end contract.
Errors and troubleshooting
The callback explicitly returns #NUM! for nonpositive price or redemption, invalid dates, settlement on or after maturity, or a rejected basis. A premium price is allowed: price 102, redemption 100 and the primary dates produce approximately -0.039215686275. This negative yield describes a loss relative to purchase price; it is not an argument error.
Use documented basis values 0 through 4. The shared source basis converter also accepts integer 5 before this callback invokes its date helper, but the documented calendar contract does not establish a usable basis-5 result. No outcome for that undocumented path is asserted here. Unlike the four neighboring price/discount routines, this function does not use their local days_monthly_basis calculation. Avoid assuming identical month-end or February behavior solely from the matching argument names.
Use actual numeric inputs for these fixtures. Blank cells, numeric text, localized formula entry, time-of-day fractions, historical date-system anomalies and floating-point extremes were not executed. Keep the original inputs and a separately calculated time fraction available when investigating a disagreement. The model verifies the stated contract and examples; it does not certify an installed release or a financial market’s required convention.