public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec){double result;if (args.Length != 2){return ErrorEval.VALUE_INVALID;}try{double startDateAsNumber = GetValue(args[0]);int offsetInMonthAsNumber = (int)GetValue(args[1]);DateTime startDate = DateUtil.GetJavaDate(startDateAsNumber);DateTime resultDate = startDate.AddMonths(offsetInMonthAsNumber);result = DateUtil.GetExcelDate(resultDate);NumericFunction.CheckValue(result);return new NumberEval(result);}catch (EvaluationException e){return e.GetErrorEval();}}