code: @Override
  	public double getValue(double evaluationTime, AnalyticModelInterface model) {
  		ForwardCurveInterface	forwardCurve	= model.getForwardCurve(forwardCurveName);
  		DiscountCurveInterface	discountCurve	= model.getDiscountCurve(discountCurveName);
  
  		DiscountCurveInterface	discountCurveForForward = null;
  		if(forwardCurve == null && forwardCurveName != null && forwardCurveName.length() > 0) {
  			// User might like to get forward from discount curve.
  			discountCurveForForward	= model.getDiscountCurve(forwardCurveName);
  
  			if(discountCurveForForward == null) {
  				// User specified a name for the forward curve, but no curve was found.
  				throw new IllegalArgumentException("No curve of the name " + forwardCurveName + " was found in the model.");
  			}
  		}
  
  		double forward		= spread;
  		if(forwardCurve != null) {
  			forward			+= forwardCurve.getForward(model, maturity);
  		}
  		else if(discountCurveForForward != null) {
  			forward			+= (discountCurveForForward.getDiscountFactor(maturity) / discountCurveForForward.getDiscountFactor(maturity+paymentOffset) - 1.0) / paymentOffset;
  		}
  
  		double discountFactor	= maturity+paymentOffset > evaluationTime ? discountCurve.getDiscountFactor(model, maturity+paymentOffset) : 0.0;
  
  		return forward * discountFactor / discountCurve.getDiscountFactor(model, evaluationTime);
  	}
docs: /* (non-Javadoc)
  @see net.finmath.marketdata.products.AnalyticProductInterface#getValue(double, net.finmath.marketdata.model.AnalyticModelInterface)