COUPDAYSNC Function (Gnumeric)
For settlement May 15, 2026 and the next semiannual coupon on June 30, COUPDAYSNC gives 45 under basis 0 and 46 under actual-day bases.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: For settlement May 15, 2026 and the next semiannual coupon on June 30, COUPDAYSNC gives 45 under basis 0 and 46 under actual-day bases.
Availability and evidence
- Release history: The exact introduction is unverified. NEWS for 0.76 records an improvement to COUPDAYSNC, establishing its existence by that release, not its first introduction. A later differently spelled COUPDAYSCD entry is not treated as an alias or introduction record.
- Source support: Registered in the Gnumeric 1.12.62 financial plugin. No retirement is established. The last functioning native application version is unverified.
- Evidence dates: Gnumeric source retained October 13–14, 2026 was reviewed October 15. The official GOffice 0.10.61 archive was retrieved October 15 and its coupon helpers reviewed that day. Gregorian calendar and exact-rational checks are independent reference calculations; no native Gnumeric, compiled GOffice, headless application or GUI execution occurred.
Syntax and convention inputs
=COUPDAYSNC(settlement,maturity,frequency[,basis[,eom]])
Settlement and maturity are dates; maturity must be strictly later. Use DATE formulas instead of ambiguous text dates. Frequency is 1 for annual, 2 for semiannual or 4 for quarterly payments. Basis defaults to 0, and the Gnumeric-specific end-of-month flag eom defaults to TRUE.
The documented bases are 0 US 30/360, 1 actual/actual, 2 actual/360, 3 actual/365 and 4 European 30/360. The inspected implementation also accepts 5 and maps it to the GOffice 30E+/360 rule; that source extension should not be mistaken for a universally portable option. Use explicit documented integer conventions in ordinary work.
The schedule is anchored backward from maturity in steps of 12/frequency months. If eom is TRUE and maturity is its month’s final day, intermediate coupon dates are moved to their month ends. Otherwise the maturity day is retained where possible and clipped for a shorter month. This is a scheduled-date calculation, without holiday or business-day adjustment.
Complete reproducible inputs
Create CouponControls and enter:
| Cell | Meaning | Entry |
|---|---|---|
| B2 | Settlement | =DATE(2026,5,15) |
| B3 | Maturity | =DATE(2028,12,31) |
| B4 | Frequency | 2 |
| B5 | Basis | 0 |
| B6 | End of month | Boolean TRUE |
In D2 enter =COUPDAYSNC($B$2,$B$3,$B$4,$B$5,$B$6). The independent expected result is 45 convention days remaining to the next coupon.
The surrounding period runs from December 31, 2025 through June 30, 2026. The previous boundary is at or before settlement; the next is strictly after it. Keep frequency, maturity and eom consistent when comparing members of the coupon-function family.
Trace the remaining-day calculation
The next scheduled coupon is June 30, 2026. Under basis 0, May 15 to June 30 is one 30-day month plus 15 days, giving 45. Under bases 1, 2 and 3 the helper uses the actual date difference, 46.
Change settlement B2 to =DATE(2026,6,15) in a copy. The next coupon stays June 30 and the remaining count becomes 15 under both basis 0 and the actual-day bases. Agreement in this shorter interval does not erase the difference seen from May 15.
Reference controls
| Controlled inputs | Independent reference result |
|---|---|
| =COUPDAYSNC($B$2,$B$3,$B$4,$B$5,$B$6) | 45 |
| Original setup, basis 0 | 45 |
| Original setup, basis 1 | 46 |
| Original setup, basis 2 | 46 |
| Original setup, basis 3 | 46 |
| Original setup, basis 4 | 45 |
| Original setup, basis 5 | 45 |
| Original setup, annual frequency | 226 |
| Original setup, quarterly frequency | 45 |
| Settlement June 15, 2026 | 15 |
| Settlement June 30, 2026 | 180 |
| 2002-11-29 to 2004-02-29, frequency4, basis0, eom TRUE | 1 |
| Same historical dates, eom FALSE | 89 |
| Frequency 3 rejected | #NUM! |
| Basis 6 rejected | #NUM! |
| Settlement equals maturity | #NUM! |
| Failed date conversion | #VALUE! |
These are independent calendar/day-count controls against the pinned helper. The original setup must be restored before switching another argument, especially when comparing different schedules.
Advanced: a remaining-period fraction
With basis-zero inputs, dividing 45 by the matching COUPDAYS value 180 gives 0.25 of the convention period remaining. The elapsed fraction is 135/180=0.75 in this particular fixture.
With basis 1, the remaining fraction is 46/181. This is a different fraction because both the actual-day numerator and full-period denominator differ. It should not be silently combined with the basis-zero 180 denominator.
Under basis 2, elapsed plus remaining actual counts total 181, but COUPDAYS supplies 180. Under basis 3 it supplies 182.5. COUPDAYSNC is a numerator calculation, so interpreting it requires the denominator chosen for the intended model.
Advanced: a coupon-day settlement starts a new countdown
For settlement June 29, 2026, the next coupon is June 30 and the actual remaining count is 1. For settlement exactly June 30, the next coupon becomes December 31. Basis-one COUPDAYSNC therefore becomes 184, while basis zero gives 180.
The function does not return zero merely because settlement equals a scheduled coupon. The source defines the next coupon strictly after settlement, while the previous boundary can equal settlement. This boundary convention should be tested separately from an ordinary mid-period example.
Advanced: end-of-month changes the selected coupon
Use settlement November 29, 2002, maturity February 29, 2004 and frequency 4. With default eom TRUE, the next coupon is November 30, 2002 and basis-zero COUPDAYSNC is 1.
With eom FALSE, settlement is itself a scheduled coupon, and the next one is February 28, 2003. Basis-zero COUPDAYSNC becomes 89; the actual-day count is 91. The sharp difference comes from a different next date, not merely from substituting a 360-day year.
Advanced: distinguish coupon scheduling from business calendars
The source steps backward from maturity by calendar months. It does not move a weekend or holiday coupon to a business day. A contract’s adjusted payment date can therefore differ from this theoretical schedule even when the arithmetic is correct.
Use a separately specified calendar adjustment if the task requires one. Do not change maturity, frequency or eom simply to force a desired date without recording that change to the schedule model.
Errors and verification limits
The shared wrapper returns #VALUE! when its date conversion fails, and #NUM! for an invalid frequency/basis or settlement greater than or equal to maturity. Explicit frequency 3 and basis 6 are rejected. Numeric frequency/basis processing includes truncation and bounds checks; use the documented integer settings rather than relying on fractional or locale-sensitive coercion.
The examples use modern DATE values, complete regular schedules and separately controlled changes. Date-system conversion, malformed text, extreme dates, native final-digit behavior and file transfers are not certified. Source review and independent calendar arithmetic do not establish actual GUI or native-library execution.
Sources and related guides
- Function help and worksheet callback
- Shared coupon validation and defaults, frequency/basis conversion, and coupon count/date wrappers
- Official GOffice 0.10.61 source archive: goffice/utils/datetime.c lines 281–417 for day-count rules and 422–547 for coupon scheduling and denominators; datetime.h lines 78–85 for basis codes.
- Documented basis descriptions
- Gnumeric official function catalogue