# insurance.no-claims-discount
The no-claims discount (NCD, or no-claims bonus) a policyholder holds at
renewal, from the years they held, the claims in the year just ended and the
insurer's scale.
## The scale is the caller's
Every insurer publishes its own scale: the discount at each number of
claim-free years, and how far a claim steps you back. So the scale is an
argument, not data in this package. Each level says:
- `years`: the claim-free years from which it applies (the scale starts at 0
and rises; gaps are fine: years 6 to 8 on a scale with levels at 5 and 9
get the 5-year discount);
- `discountBasisPoints`: its discount;
- `stepBack`: the years held after 1, 2, 3... claims in a year from this
level. More claims than listed use the last entry, and an empty list means
any claim goes back to 0. A step never rises above the level or the step
before it.
The vectors use an illustrative scale (0, 30, 40, 50, 60, 65% up to 5 years,
70% at 9; one claim at 5 years steps back to 3), not any insurer's.
## The rules applied
- A claim-free year earns one year. Years keep counting beyond the top of the
scale (UK insurers quote "9+ years"), and the discount is that of the
highest level not above them.
- A year with claims steps back by the level the policyholder held at the
start of the year: 12 years with a top level at 9 uses the 9-year steps.
- **Protected NCD**: when `claimsInWindow` (this year's claims included) is
within `claimLimit` (commonly 2 claims in 5 years), the years stay as they
were. The claim year earns no extra year, which is how protection is
usually sold: it protects the discount, not the premium. Beyond the limit
the normal step-back applies. Some insurers do let a protected claim year
earn; add one to `years` if yours does.
Which claims count against NCD (a non-fault claim where costs are fully
recovered usually does not) is for the caller to decide before calling.
Applying the discount to a premium is `money.apply-rate` or
`insurance.rating-factors`.