COUPDAYS in WPS Spreadsheet: Measure the Whole Coupon Period
Find the length of the coupon period containing settlement and distinguish it from elapsed and remaining days.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: COUPDAYS returns the day count for the complete coupon period containing settlement. With settlement April 20, 2026, maturity November 15, 2027, semiannual coupons and basis 1, the independent regular-schedule expectation is 181 days.
Availability and evidence scope
The official WPS COUPDAYS lesson documents this function for WPS Office for Windows Personal. The source was checked on October 19, 2026. It does not establish the first release, the last supported release, or an exact installed build. Availability in Mac, Linux, web, mobile and other editions remains unverified.
Examples below distinguish documented behavior from independently calculated controls. No results were captured from a new WPS execution for this guide. No native screenshot or cross-client compatibility test is claimed.
Syntax and arguments
=COUPDAYS(settlement,maturity,frequency,[basis])
| Argument | Required? | Meaning |
|---|---|---|
settlement |
Yes | Date the buyer acquires the security; use a real spreadsheet date. |
maturity |
Yes | Security’s maturity date, later than settlement. |
frequency |
Yes | Coupon payments per year: 1 annual, 2 semiannual, 4 quarterly. |
basis |
No | Day-count convention; omitted means 0, US (NASD) 30/360. |
The documented basis values are 0 (US/NASD 30/360), 1 (actual/actual), 2 (actual/360), 3 (actual/365), and 4 (European 30/360). Set this explicitly when comparing workbooks. The common examples use basis 1 so the calendar-day arithmetic is transparent. A basis is a financial convention, not a date-display format.
Use DATE rather than ambiguous date text. The official lessons say arguments are truncated to integers; this guide deliberately uses whole-day dates and integer frequency/basis values. Fractional-input validation order and settlement exactly on a coupon date still need target-build testing.
Reproducible input sheet
Enter labels in A1:A4 and these values in B1:B4:
| Cell | Label | Enter |
|---|---|---|
| B1 | Settlement | =DATE(2026,4,20) |
| B2 | Maturity | =DATE(2027,11,15) |
| B3 | Payments per year | 2 |
| B4 | Basis | 1 |
For the independent model, assume a regular semiannual schedule anchored on maturity, with coupons every May 15 and November 15. Around settlement, the previous coupon is November 15, 2025 and the next is May 15, 2026. These deliberately non-month-end dates avoid assuming any special end-of-month roll convention.
Example: calculate and explain the result
=COUPDAYS(B1,B2,B3,B4)
The expected 181 days is the actual calendar difference from November 15, 2025 to May 15, 2026. Settlement lies inside that period; it does not shorten the period to the remaining 25 days.
These expectations are calculated from the stated calendar model, not from native WPS execution. The model anchors regular coupons on maturity and steps backward by 12/frequency months. It counts actual date differences without adding an extra day for both endpoints.
Control from the official lesson
WPS also publishes settlement January 25, 2011, maturity November 15, 2011, frequency 2 and basis 1 with result 181. The surrounding regular period is November 15, 2010 to May 15, 2011. This is a documented example, separately from the original 2026 dataset above.
Advanced example: compare payment schedules
Keep settlement, maturity and basis unchanged, but evaluate the three permitted frequencies:
| Formula | Independent regular-schedule period | Expected basis-1 days |
|---|---|---|
=COUPDAYS(B1,B2,1,1) |
2025-11-15 to 2026-11-15 | 365 |
=COUPDAYS(B1,B2,2,1) |
2025-11-15 to 2026-05-15 | 181 |
=COUPDAYS(B1,B2,4,1) |
2026-02-15 to 2026-05-15 | 89 |
These are calendar-model controls, not captured WPS outputs. They show why annual days divided by frequency is not a general replacement for actual/actual period length. Quarterly periods do not all contain 365/4 actual days.
For the semiannual input, the elapsed fraction is =COUPDAYBS(B1,B2,B3,B4)/COUPDAYS(B1,B2,B3,B4), expected 156/181, approximately 0.8618784530. Keeping the denominator in its own cell makes it easier to spot an accidentally annual period in a semiannual calculation.
Errors, limits and troubleshooting
| Symptom | Documented rule or practical check |
|---|---|
#VALUE! |
The lesson identifies invalid settlement or maturity dates. Replace date text with DATE formulas before investigating the bond calculation. |
#NUM! |
Check that frequency is 1, 2 or 4, basis is within 0–4, and settlement is earlier than maturity. |
| A plausible result differs from another workbook | Compare the actual stored dates, payment frequency and explicit basis, not just the displayed labels. |
| Formula is not recognized | Confirm the function in the target installation; the lesson does not guarantee every build or client. |
A regular coupon calculation does not reconstruct an irregular first or final coupon from issue-date information: there is no issue-date argument here. Nor does the function model business-day holidays, negotiated payment-date adjustments or a changing coupon schedule through the four arguments. Reconcile the assumed schedule with the security’s terms before using the result in a financial model.
Keep basis-1 calendar checks separate from 30/360 checks. Do not treat ordinary date subtraction as a universal substitute for a financial day-count convention. Month ends, leap days, settlement exactly on a coupon date and fractional arguments are useful additional native test cases, but no result for those untested boundaries is asserted here.
Choose the right coupon result
Use this function for a period denominator. COUPDAYBS supplies elapsed days, while COUPDAYSNC supplies remaining days. The three values answer different questions even though their arguments look the same.
References and verification
- Official WPS COUPDAYS lesson (Chinese; Windows Personal documentation).
The documentation establishes the syntax and stated behavior. Original examples were checked independently under the assumptions stated alongside them; target-build execution remains a separate check. Version boundaries have not been inferred from another spreadsheet product.