# cpncount

Coupon payments remaining until maturity

## Syntax

```NumCouponsRemaining = cpncount(Settle, Maturity, Period, Basis,EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate,StartDate)
```

## Arguments

 `Settle` Settlement date. A vector of serial date numbers or date strings. `Settle` must be earlier than `Maturity`. `Maturity ` Maturity date. A vector of serial date numbers or date strings. `Period` (Optional) Coupons per year of the bond. A vector of integers. Allowed values are `0`, `1`, `2` (default), `3`, `4`, `6`, and `12`. `Basis` (Optional) Day-count basis of the instrument. A vector of integers. 0 = actual/actual (default)1 = 30/360 (SIA)2 = actual/3603 = actual/3654 = 30/360 (PSA)5 = 30/360 (ISDA)6 = 30/360 (European)7 = actual/365 (Japanese)8 = actual/actual (ICMA)9 = actual/360 (ICMA)10 = actual/365 (ICMA)11 = 30/360E (ICMA) 12 = actual/365 (ISDA)13 = BUS/252For more information, see basis. `EndMonthRule` (Optional) End-of-month rule. A vector. This rule applies only when `Maturity` is an end-of-month date for a month having 30 or fewer days. `0` = ignore rule, meaning that a bond's coupon payment date is always the same numerical day of the month. `1` = set rule on (default), meaning that a bond's coupon payment date is always the last actual day of the month. `IssueDate` (Optional) Date when a bond was issued. `FirstCouponDate` (Optional) Date when a bond makes its first coupon payment; used when bond has an irregular first coupon period. When `FirstCouponDate` and `LastCouponDate` are both specified, `FirstCouponDate` takes precedence in determining the coupon payment structure. If you do not specify a `FirstCouponDate`, the cash flow payment dates are determined from other inputs. `LastCouponDate` (Optional) Last coupon date of a bond before the maturity date; used when bond has an irregular last coupon period. In the absence of a specified `FirstCouponDate`, a specified `LastCouponDate` determines the coupon structure of the bond. The coupon structure of a bond is truncated at the `LastCouponDate`, regardless of where it falls, and is followed only by the bond's maturity cash flow date. If you do not specify a `LastCouponDate`, the cash flow payment dates are determined from other inputs. `StartDate` (Future implementation)

Required arguments must be number of bonds, `NUMBONDS`)-by-`1` or `1`-by-`NUMBONDS`, conforming vectors or scalars. Optional arguments must be either `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS` conforming vectors, scalars, or empty matrices.

## Description

```NumCouponsRemaining = cpncount(Settle, Maturity, Period, Basis, EndMonthRule)``` returns the whole number of coupon payments between the settlement and maturity dates for a coupon bond or set of bonds. Coupons falling on or before settlement are not counted, except for the maturity payment which is always counted.

## Examples

collapse all

### Find Coupon Payments Remaining Until Maturity

This example shows how to find the coupon payments remaining until maturity.

```NumCouponsRemaining = cpncount('14 Mar 1997', '30 Nov 2000',... 2, 0, 0) ```
```NumCouponsRemaining = 8 ```

### Find Coupon Payments Remaining Until Maturity for Different Maturity Dates

This example shows how to find the coupon payments remaining until maturity, given three coupon bonds with different maturity dates and the same default arguments.

```Maturity = ['30 Sep 2000'; '31 Oct 2001'; '30 Nov 2002']; NumCouponsRemaining = cpncount('14 Sep 1997', Maturity) ```
```NumCouponsRemaining = 7 9 11 ```