<?php
date_default_timezone_set('America/Sao_Paulo');
echo AddMesVencimentoAcordo("2010-01-31",0)."\n";
echo AddMesVencimentoAcordo("2010-01-31",1)."\n";
echo AddMesVencimentoAcordo("2010-01-31",2)."\n";
echo AddMesVencimentoAcordo("2010-01-31",3)."\n";
echo AddMesVencimentoAcordo("2010-01-31",4)."\n";
echo AddMesVencimentoAcordo("2010-01-31",5)."\n";
echo AddMesVencimentoAcordo("2010-01-31",16)."\n";
echo AddMesVencimentoAcordo("2010-01-31",23)."\n";

/*
Descomentar uma das linhas de retorno, dependendo da opção que quiser...
*/

	function AddMesVencimentoAcordo($data,$add)
	{
		$data = strtotime($data);
		$dia = date("d",$data);
		$mes = date("m",$data) + $add;
		$ano = date("Y",$data);
		
		$ano+= intval($mes / 12);
		$mes = $mes % 12;
		if ($mes == 0)
		{
			$mes = 12; //Pequeno Fix para Mes % 12 = 0 fica invalida a data e ele retornava o último dia do mês
			$ano--; //Fix Bug que eu não sabia
		}		
		if (checkdate($mes,$dia,$ano))
			return date("Y-m-d",strtotime("$ano-$mes-$dia"));
		else
			//return date("Y-m-t",strtotime("$ano-$mes-01")); //Se quiser antecipar para o último dia do mês...
			return date("Y-m-d",strtotime("+1 Day",strtotime(date("Y-m-t",strtotime("$ano-$mes-01"))))); //Se quiser passar pra o primeiro dia do próximo mês...

	}
?>