COUPPCD Function in ONLYOFFICE Spreadsheet Editor: Syntax and Examples
Find the start of the current regular coupon period and distinguish its date serial from elapsed coupon days.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer
COUPPCD returns the previous regular coupon boundary. For the worked settlement, =COUPPCD(DATE(2026,4,15),DATE(2028,12,15),2,1) is expected to represent December 15, 2025, raw serial 46006 in the 1900 date system. At an exact coupon boundary, the inspected implementation returns settlement itself rather than a strictly earlier date.
Syntax and argument rules
=COUPPCD(settlement, maturity, frequency, [basis])
| Argument | Meaning and permitted inputs |
|---|---|
settlement |
Settlement date; use a numeric date created with DATE or a cell containing one |
maturity |
Maturity date, strictly later than settlement |
frequency |
Payments per year: 1 annual, 2 semiannual or 4 quarterly |
basis |
Optional day-count code, default 0 in the inspected implementation |
The official COUPPCD reference lists basis 0 as US (NASD) 30/360, 1 as actual/actual, 2 as actual/360, 3 as actual/365 and 4 as European 30/360. Brackets indicate an optional argument; do not type them. Use integer frequency and basis values deliberately rather than relying on input conversion.
These functions infer a regular schedule from maturity and frequency. They do not take an issue date, first coupon date, holiday calendar or irregular-period flag. A contractual payment schedule with odd first/last coupons or business-day adjustments needs separate treatment.
Reproducible worksheet setup
Enter the following in a new worksheet. DATE avoids ambiguity between month/day and day/month date text.
| Cell | Input | Meaning |
|---|---|---|
| A2 | =DATE(2026,4,15) |
Settlement, April 15, 2026 |
| B2 | =DATE(2028,12,15) |
Maturity, December 15, 2028 |
| C2 | 2 |
Semiannual coupons |
| D2 | 1 |
Actual/actual basis |
Put =COUPPCD(A2,B2,C2,D2) in E2. The expected regular schedule around settlement runs from December 15, 2025 to June 15, 2026. All examples in this guide are documentation/source-derived expectations with independent calendar arithmetic; none was tested in the application or its calculation engine.
Worked dates and display
Format E2 as Number to inspect the expected serial 46006. Put =E2 in F2 and format F2 as yyyy-mm-dd to display 2025-12-15. Do not mistake a five-digit serial for a failed date calculation or change it into text merely to make it readable.
| Formula | Expected date | 1900-system serial |
|---|---|---|
=COUPPCD(A2,B2,1,1) |
2025-12-15 | 46006 |
=COUPPCD(A2,B2,2,1) |
2025-12-15 | 46006 |
=COUPPCD(A2,B2,4,1) |
2026-03-15 | 46096 |
=COUPPCD(DATE(2026,6,15),B2,2,1) |
2026-06-15 | 46188 |
The previous-coupon helper steps backward while the candidate is greater than settlement. Equality stops the loop. This refines the help’s shorthand “before the settlement date”: for this implementation, the boundary is on or before settlement.
Basis is checked for validity but is not supplied to the previous-date helper. Valid basis codes 0–4 therefore leave these worked calendar dates unchanged. They can change day-count calculations made from the dates, which is a different operation.
Practical extension
Use the previous boundary to independently audit an elapsed-day numerator. For the setup, April 15, 2026 minus December 15, 2025 is 121 actual days. That agrees with the actual-basis COUPDAYBS expectation. Under US or European 30/360, the day-count numerator is 120 instead; ordinary serial subtraction remains actual days and cannot reproduce every financial convention.
Keep the inferred schedule boundary alongside the contract’s stated coupon dates. The four inputs do not include issue date or first coupon, so a returned boundary can predate a security’s actual issue in a short first period. Do not interpret it as proof that a payment really occurred on that date. For unusual schedules, compare the inferred boundary with an explicit contractual schedule before using it for accruals.
Errors, date inputs and schedule boundaries
The 10.0.0.169 coupon wrappers floor numeric date serials, frequency and basis before validation. Thus a time fraction is discarded. This does not mean malformed text or fractional settings are recommended inputs.
- Settlement equal to or later than maturity returns
#NUM!in the inspected source. For example, with A2 and B2 from the setup,=COUPPCD(B2,B2,2,1)follows that guard. - An unsupported frequency such as 3 or basis such as 5 returns
#NUM!after integer conversion. - Boolean scalar arguments and multi-cell ranges are rejected with
#VALUE!in these wrappers. Use individual input cells. - An empty required scalar input is handled as
#N/A; omitted basis defaults to 0. Do not assume a blank referenced basis cell has the same treatment as omitting the argument. - Dates before the supported serial range and locale-dependent date-text coercion require separate checking. The examples use modern DATE values rather than historical serial edge cases.
Month-end and leap-day schedules deserve special attention. The date helper preserves month end when adding months from a month-end date, while year changes use a UTC year setter. A February 29 maturity and an arbitrary month-end sequence should therefore be checked against the contract rather than inferred from a fixed number of days. The 15th-of-month examples avoid those edge cases. No holiday or weekend adjustment is made by the inspected coupon helpers.
Availability and compatibility
Checked October 18, 2026 against the current official help and SDKJS source tagged v10.0.0.169. Desktop Editors 10.0 was released October 13, 2026. The sources do not establish this function’s first introduction version, and do not mark it retired or deprecated.
The source tag matches the installed version/build designation; it does not establish native execution or byte-for-byte identity of the entire application. Older versions, mobile clients, server deployments and imported-workbook behavior were not tested. Formula examples use English names and comma separators; adapt separators to your editor’s settings. Date serial examples, where shown, assume the 1900 date system; a different workbook date system changes the raw serial, not the intended calendar label.