docs: @Override
  	public RandomVariable getValue(double evaluationTime, LIBORModelMonteCarloSimulationModel model) throws CalculationException {
  
  		// This is on the Libor discretization
  		int		liborIndex		= model.getLiborPeriodIndex(maturity);
  		double	paymentDate		= model.getLiborPeriod(liborIndex+1);
  		double	periodLength	= paymentDate - maturity;
  
  		// Get random variables
  		RandomVariable	libor						= model.getLIBOR(maturity, maturity, paymentDate);
  
  		// Set up payoff on path
  		double[] payoff = new double[model.getNumberOfPaths()];
  		for(int path=0; path<model.getNumberOfPaths(); path++)
  		{
  			double liborOnPath = libor.get(path);
  
  			if(liborOnPath < strike) {
  				payoff[path] = periodLength;
  			}
  			else {
  				payoff[path] = 0.0;
  			}
  		}
  
  		// Get random variables
  		RandomVariable	numeraire					= model.getNumeraire(paymentDate);
  		RandomVariable	monteCarloProbabilities		= model.getMonteCarloWeights(paymentDate);
  
  		RandomVariable	numeraireAtEvaluationTime					= model.getNumeraire(evaluationTime);
  		RandomVariable	monteCarloProbabilitiesAtEvaluationTime		= model.getMonteCarloWeights(evaluationTime);
  
  		RandomVariable values = new RandomVariableFromDoubleArray(paymentDate, payoff);
  		values.div(numeraire).mult(monteCarloProbabilities);
  		values.div(numeraireAtEvaluationTime).mult(monteCarloProbabilitiesAtEvaluationTime);
  
  		// Return values
  		return values;
  	}