Validate.isTrue(index >= 0, "Settlement date is before first accrual date");
Validate.isTrue(index < length, "Settlement date is after maturity date");
final double accruedInterest = getAccruedInterest(dayCount, index, length, nominalDates[index], settlementDate, nominalDates[index + 1], coupon, paymentsPerYear, isEndOfMonthConvention);
ZonedDateTime exDividendDate = nominalDates[index + 1];
for (int j = 0; j < exDividendDays; j++) {
while (!calendar.isWorkingDay(exDividendDate.toLocalDate())) {
exDividendDate = exDividendDate.minusDays(1);
}
exDividendDate = exDividendDate.minusDays(1);
}
if (exDividendDays != 0 && exDividendDate.isBefore(settlementDate)) {