code: @Override
  	public RandomVariableInterface getValue(double evaluationTime, LIBORModelMonteCarloSimulationInterface model) throws CalculationException {
  
  		// Note: We use > here. To distinguish an end of day valuation use hour of day for cash flows and evaluation date.
  		if(evaluationTime > flowDate) {
  			return model.getRandomVariableForConstant(0.0);
  		}
  
  		RandomVariableInterface values = model.getRandomVariableForConstant(flowAmount);
  		if(isPayer) {
  			values = values.mult(-1.0);
  		}
  
  		// Rebase to evaluationTime
  		if(flowDate != evaluationTime) {
  			// Get random variables
  			RandomVariableInterface	numeraire				= model.getNumeraire(flowDate);
  			RandomVariableInterface	numeraireAtEval			= model.getNumeraire(evaluationTime);
  			//        RandomVariableInterface	monteCarloProbabilities	= model.getMonteCarloWeights(getPaymentDate());
  			values = values.div(numeraire).mult(numeraireAtEval);
  		}
  
  		// Return values
  		return values;
  	}
docs: This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.
  Note: For a lattice this is often the value conditional to evalutationTime, for a Monte-Carlo simulation this is the (sum of) value discounted to evaluation time.
  cash-flows prior evaluationTime are not considered.
  
  @param evaluationTime The time on which this products value should be observed.
  @param model The model used to price the product.
  @return The random variable representing the value of the product discounted to evaluation time
  @throws net.finmath.exception.CalculationException Thrown if the valuation fails, specific cause may be available via the <code>cause()</code> method.