code: @Override
  	public double getForward(AnalyticModel model, double fixingTime, double paymentOffset)
  	{
  		if(model == null) {
  			throw new IllegalArgumentException(this.getName() + ": model==null");
  		}
  		DiscountCurve referenceDiscountCurveForForwards = model.getDiscountCurve(referenceDiscountCurveForForwardsName); // do not use discountCurveName here (usually this is an OIS curve)
  		if(referenceDiscountCurveForForwards == null) {
  			throw new IllegalArgumentException(this.getName() + ": referenceDiscountCurveForForwards " + referenceDiscountCurveForForwardsName + " not found in the model:\n" + model.toString());
  		}
  		if(Double.isNaN(paymentOffset) || paymentOffset<=0.0) {
  			throw new IllegalArgumentException(this.getName() + ": Requesting forward with paymentOffset " + paymentOffset + " not allowed.");
  		}
  
  		double daycount = (daycountConvention != null ?
  				daycountConvention.getDaycountFraction(
  						FloatingpointDate.getDateFromFloatingPointDate(getReferenceDate(), fixingTime),
  						FloatingpointDate.getDateFromFloatingPointDate(getReferenceDate(), fixingTime+paymentOffset)
  						)
  				: paymentOffset) * daycountScaling;
  		return (referenceDiscountCurveForForwards.getDiscountFactor(model, fixingTime+periodOffset) / referenceDiscountCurveForForwards.getDiscountFactor(model, fixingTime+paymentOffset+periodOffset) - 1.0) / daycount;
  	}
docs: /* (non-Javadoc)
  @see net.finmath.marketdata.ForwardCurveInterface#getForward(double)