Ahora que lo pienso... ¿y si en vez de sumarle n meses, le sumas n + 1 y le restas los m días que tengas?
Es decir que si por ejemplo, que hoy es 04/04 y deseamos que el plazo sea a Julio (31/07) en vez de sumarle n = 3, le sumamos n = 3 + 1 = 4:
Temporalmente nos queda: 04/08.
Le restamos los 4 días, y... finalmente tenemos 31/07.
En teoría funciona. No lo he probado...
EDITO:
Lo he probado, por ejemplo algo así:
Código SQL
[-]
select cast(AddDay(AddMonth(CURRENT_DATE,4),-4) as TIMESTAMP) FROM TABLA1
Saludos,