No he probado rigurosamente mi programa como para decir que funciona al 100% pero aqui te dejo una implementación hecha por mi para sumarle meses a una fecha.
  Descripción:
Dado una fecha valida (en este caso un objeto datetime) añadir meses a la fecha de la siguiente manera:
- Calcula el nuevo año, después de todo si pasan mas de 12 meses es un año completo.
  - Calcula cuantos meses se va a desplazar, esto siempre cae un rango de 0 a 11. Después de todo si nos movemos 12 meses llegamos al mismo mes, lo mismo pasa con 24, 48 y todos los múltiplos de 12.
  - Se desplaza esa cantidad de meses y hace una corrección tanto en los meses como en los años.
  - El día es el mismo.
  - Si resulta ser una fecha no valida entonces el día se pasa al ultimo día valido del mes.
  
   
Código Python:
Ver originalfrom datetime import datetime
 
def add_month(mDate, months):
    nYear = mDate.year + months / 12
    dMonth = months % 12
    if dMonth + mDate.month > 12:
        nYear += 1
    nMonth = (mDate.month + dMonth) % 12 or 12
    nDay = mDate.day
 
    try:
        return datetime(nYear, nMonth, nDay)
    except Exception, e:
        pass
    if nMonth == 2:
        nDay = 28
        if (nYear % 4 == 0 and  nYear % 100 != 0) or nYear % 400 == 0:
            nDay = 29
    else:
        nDay = 30
    return datetime(nYear, nMonth, nDay)
 
d = datetime(2000, 1, 31)
for i in range(24):
    print add_month(d, i)
  
 NOTA: Solo funciona con fechas validas y meses positivos o cero.