docs: @Override
  	public RandomVariableInterface getValue(double evaluationTime, AssetModelMonteCarloSimulationInterface model) throws CalculationException {
  		// Get underlying and numeraire
  
  		// Get S(T)
  		RandomVariableInterface underlyingAtMaturity	= model.getAssetValue(maturity, underlyingIndex);
  
  		// The payoff: values = indicator(underlying - strike, 0) = V(T) = max(S(T)-K,0)
  		RandomVariableInterface values = underlyingAtMaturity.barrier(underlyingAtMaturity.sub(strike), underlyingAtMaturity.mult(0.0).add(1.0), 0.0);
  
  		// Discounting...
  		RandomVariableInterface numeraireAtMaturity		= model.getNumeraire(maturity);
  		RandomVariableInterface monteCarloWeights		= model.getMonteCarloWeights(maturity);
  		values = values.div(numeraireAtMaturity).mult(monteCarloWeights);
  
  		// ...to evaluation time.
  		RandomVariableInterface	numeraireAtEvalTime					= model.getNumeraire(evaluationTime);
  		RandomVariableInterface	monteCarloProbabilitiesAtEvalTime	= model.getMonteCarloWeights(evaluationTime);
  		values = values.mult(numeraireAtEvalTime).div(monteCarloProbabilitiesAtEvalTime);
  
  		return values;
  	}