Contact

DISC Function (Gnumeric)

Financial Intermediate Gnumeric Gnumeric 0.33–0.35 (grouped release notes)

Calculate a security’s annual discount rate in Gnumeric with DISC. Compare redemption-based discounts with investment-based yields and inspect calendar-basis quirks.

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

Quick answer: =DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100) has independently expected result 0.05. 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: Recorded as implemented in the grouped Gnumeric 0.33, 0.34 and 0.35 release notes. The exact first release within that interval and the release date are not established.
  • 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 DISC calculates

DISC annualizes the price reduction relative to redemption: (redemption-par)/redemption × B/A. Here A is the implementation’s settlement-to-maturity day count and B is its year denominator. This is a discount quotation, not a compound investment return. A result of 0.05 means 5%; it does not mean a five-unit price reduction for every holding period.

Syntax and arguments

=DISC(settlement,maturity,par,redemption,[basis])

par is the price paid per 100 face value, despite the argument name; it is not automatically the face amount. redemption is the maturity amount on the same scale. The two dates and two amounts are required. basis is optional and defaults to 0.

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 DiscountQuote with B2 =DATE(2026,1,15), B3 =DATE(2026,7,15), B4 97.5, B5 100 and B6 0. In B8 enter =DISC(B2,B3,B4,B5,B6). The expected result is 0.05. The default helper counts 180 days with a 360-day denominator. In B9 calculate =(B5-B4)/B5; this is the unannualized discount, 0.025. B10 =B9*360/180 must agree with B8. Keep both amount cells on the same per-100 scale.

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
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100) 0.05
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,0) 0.05
=DISC(DATE(2026,1,15),DATE(2026,7,15),95,100,0) 0.1
=DISC(DATE(2026,1,15),DATE(2026,7,15),102,100,0) -0.04
=DISC(DATE(2026,1,15),DATE(2026,7,15),0,100,0) 2
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,0,0) #NUM!
=DISC(DATE(2026,1,15),DATE(2026,1,15),97.5,100,0) #NUM!
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,2) 0.049723756906
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,3) 0.050414364641
=DISC(DATE(2026,2,15),DATE(2026,3,15),99,100,0) 0.128571428571
=DISC(DATE(2026,2,15),DATE(2026,3,15),99,100,4) 0.12
=DISC(DATE(2026,1,15),DATE(2026,7,15),97.5,100,5) #NUM!

Advanced application and cross-check

Duplicate the worksheet and change only B4 from 97.5 to 95. B9 becomes 0.05 and B8 becomes 0.1: twice the discount for the same dates and redemption. Now restore 97.5 and compare the investment-based expression =(B5-B4)/B4*360/180, whose expected result is approximately 0.051282051282. Its larger result arises from dividing by the smaller purchase price. The difference is a quotation convention, not an arithmetic inconsistency.

A price reconstruction is =B5*(1-B8*180/360), which returns 97.5. This inverse uses exactly the same time fraction as DISC. Scaling both B4 and B5 by 1,000 leaves the returned discount unchanged, because their ratio is unchanged. Scaling only one amount corrupts the quotation. This makes the formula useful for checking whether a per-100 price was accidentally paired with a full cash redemption.

Calendar behavior in the inspected source

These results follow the local days_monthly_basis helper, not a borrowed implementation of a similarly named financial function. For basis 4 it uses 30*month_difference + day_difference. Basis 0 starts with that expression, then subtracts 2 for a non-leap-year February settlement when maturity is outside February in the same year, or 1 in a leap year. Thus February 15 to March 15, 2026 counts as 28 under basis 0 but 30 under basis 4. The helper does not apply a universal 30th-day clamp to all month ends.

For bases 1–3 it uses elapsed date serial days. The annual denominator helper returns 360 for bases 0, 2 and 4, 365 for basis 3, and the settlement year’s 365 or 366 for basis 1. Accordingly January 15 to July 15, 2026 has 181 actual days but 180 days under the illustrated 30/360 helpers. These literal source rules explain the examples; they are not a promise of interchangeable day-count conventions across products.

Errors and troubleshooting

The callback returns #NUM! for nonpositive counted days, invalid basis/year denominator, or zero redemption. It does not enforce positive price or positive redemption. Thus a premium price of 102 with redemption 100 produces a negative discount, -0.04 in the main half-year fixture. Negative or zero prices can also produce numeric values; those are mathematical branch outcomes, not validation that a security quote is meaningful. Check your permitted amount ranges separately.

Basis 0 has a product-specific February adjustment described below. A result that differs from another product can therefore reflect day-count code rather than the discount equation. Use a separate fixture to isolate dates before comparing rates. Do not replace a zero redemption with a small positive value merely to suppress an error.

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.