public static void Main()
int giornoPagamento = 10;
DateTime dataErogazione = new DateTime(2021,2,10);
int MesiDurataMassimaFranchigia = 13;
DateTime dataElab = dataErogazione;
if(giornoPagamento <= dataErogazione.Day) dataElab = dataElab.AddMonths(1);
for (int i = 0; i < MesiDurataMassimaFranchigia; i++)
int ultimoGGMese = DateTime.DaysInMonth(dataElab.Year, dataElab.Month);
DateTime dataOut = new DateTime(dataElab.Year, dataElab.Month, giornoPagamento > ultimoGGMese ? ultimoGGMese : giornoPagamento);
Console.WriteLine(dataOut.ToString("yyyy-MM-dd"));
dataElab = dataElab.AddMonths(1);