ArgumentChecker.isTrue(!date.isAfter(getPaymentDate()), "date is after payment date");
final double paymentTime = TimeCalculator.getTimeBetween(date, getPaymentDate());
final double referenceEndTime = TimeCalculator.getTimeBetween(date, getReferenceEndDate());
final ZonedDateTime naturalPaymentDate = getPaymentDate().minusMonths(_monthLag - _conventionalMonthLag);
final double naturalPaymentTime = TimeCalculator.getTimeBetween(date, naturalPaymentDate);
return new CouponInflationZeroCouponMonthlyGearing(getCurrency(), paymentTime, getPaymentYearFraction(), getNotional(), getPriceIndex(), _indexStartValue, referenceEndTime, naturalPaymentTime,
_payNotional, _factor);
}