final double[] referenceEndTime = new double[2];
referenceEndTime[0] = TimeCalculator.getTimeBetween(date, getReferenceEndDates()[0]);
referenceEndTime[1] = TimeCalculator.getTimeBetween(date, getReferenceEndDates()[1]);
final ZonedDateTime naturalPaymentDate = getPaymentDate().minusMonths(_monthLag - _conventionalMonthLag);
final double naturalPaymentTime = TimeCalculator.getTimeBetween(date, naturalPaymentDate);
return new CouponInflationZeroCouponInterpolationGearing(getCurrency(), paymentTime, getPaymentYearFraction(), getNotional(), getPriceIndex(), _indexStartValue, referenceEndTime,
naturalPaymentTime, _weight, _payNotional, _factor);
}