final double dfForwardStartBar = 1.0 / (coupon.getFixingAccrualFactor() * dfForwardEnd) * forwardBar;
final double dfBar = (coupon.getNotional() * coupon.getPaymentYearFraction() * forward + coupon.getSpreadAmount()) * pvBar;
InterestRateCurveSensitivity result = new InterestRateCurveSensitivity();
final List<DoublesPair> listDiscounting = new ArrayList<>();
listDiscounting.add(new DoublesPair(coupon.getPaymentTime(), -coupon.getPaymentTime() * df * dfBar));
result = result.plus(coupon.getFundingCurveName(), listDiscounting);
final List<DoublesPair> listForward = new ArrayList<>();
listForward.add(new DoublesPair(coupon.getFixingPeriodStartTime(), -coupon.getFixingPeriodStartTime() * dfForwardStart * dfForwardStartBar));
listForward.add(new DoublesPair(coupon.getFixingPeriodEndTime(), -coupon.getFixingPeriodEndTime() * dfForwardEnd * dfForwardEndBar));
result = result.plus(coupon.getForwardCurveName(), listForward);
return result;