protected static Ptg calcEOMonth( Ptg[] operands )
	{
		try
		{
			GregorianCalendar startDate = getDateFromPtg( operands[0] );
			int inc = operands[1].getIntVal();
			int mm = startDate.get( Calendar.MONTH ) + inc;
			int y = startDate.get( Calendar.YEAR );
			int d = startDate.get( Calendar.DAY_OF_MONTH );
			if( mm < 0 )
			{
				mm += 12;    // 0-based
				y--;
			}
			else if( mm > 11 )
			{
				mm -= 12;
				y++;
			}
			if( (mm == 3) || (mm == 5) || (mm == 8) || (mm == 10) )    // 0-based
			{
				d = 30;
			}
			else if( mm == 1 )
			{// february
				if( (y % 4) == 0 )
				{
					d = 29;
				}
				else
				{
					d = 28;
				}
			}
			else
			{
				d = 31;
			}
			GregorianCalendar resultDate;
			resultDate = new GregorianCalendar( y, mm, d );
			double retdate = DateConverter.getXLSDateVal( resultDate );
			int i = (int) retdate;
			return new PtgInt( i );
		}
		catch( Exception e )
		{
		}
		return new PtgErr( PtgErr.ERROR_NUM );
	}