docs: @Override
  	public RandomVariableInterface getValue(double evaluationTime, LIBORModelMonteCarloSimulationInterface model) throws CalculationException {
  
  		if(evaluationTime >= this.getPaymentDate()) {
  			return new RandomVariable(0.0);
  		}
  
  		// Get random variables
  		RandomVariableInterface	notionalAtPeriodStart	= getNotional().getNotionalAtPeriodStart(this, model);
  		RandomVariableInterface	numeraireAtEval			= model.getNumeraire(evaluationTime);
  		RandomVariableInterface	numeraire				= model.getNumeraire(getPaymentDate());
  		// @TODO: Add support for weighted Monte-Carlo.
  		//        RandomVariableInterface	monteCarloProbabilities	= model.getMonteCarloWeights(getPaymentDate());
  
  		RandomVariableInterface values;
  
  		// Calculate numeraire relative value of coupon flows
  		if(couponFlow) {
  			values = getCoupon(model);
  			values = values.mult(notionalAtPeriodStart);
  			values = values.div(numeraire);
  			if(isExcludeAccruedInterest && evaluationTime >= getPeriodStart() && evaluationTime < getPeriodEnd()) {
  				double nonAccruedInterestRatio = (getPeriodEnd() - evaluationTime) / (getPeriodEnd() - getPeriodStart());
  				values = values.mult(nonAccruedInterestRatio);
  			}
  		}
  		else {
  			values = new RandomVariable(0.0,0.0);
  		}
  
  		// Apply notional exchange
  		if(notionalFlow) {
  			RandomVariableInterface	nationalAtPeriodEnd		= getNotional().getNotionalAtPeriodEnd(this, model);
  
  			if(getPeriodStart() > evaluationTime) {
  				RandomVariableInterface	numeraireAtPeriodStart	= model.getNumeraire(getPeriodStart());
  				values = values.subRatio(notionalAtPeriodStart, numeraireAtPeriodStart);
  			}
  
  			if(getPeriodEnd() > evaluationTime) {
  				RandomVariableInterface	numeraireAtPeriodEnd	= model.getNumeraire(getPeriodEnd());
  				values = values.addRatio(nationalAtPeriodEnd, numeraireAtPeriodEnd);
  			}
  		}
  
  		if(payer) {
  			values = values.mult(-1.0);
  		}
  
  		values = values.mult(numeraireAtEval);
  
  		// Return values
  		return values;
  	}