refStart = start = schedule.date(i);
refEnd = end = schedule.date(i+1);
final Date paymentDate = isZero ? lastPaymentDate : calendar.adjust(end, paymentAdj);
if (i == 0 && !schedule.isRegular(i + 1)) {
refStart = calendar.adjust(end.sub(schedule.tenor()), paymentAdj);
}
if (i == n - 1 && !schedule.isRegular(i + 1)) {
refEnd = calendar.adjust(start.add(schedule.tenor()), paymentAdj);
}
if (Detail.get(gearings, i, 1.0) == 0.0) {