private List <Date> getListOfPeriodDatesIncludingQuasiPayments(Schedule schedule)
{
// Process the schedule into an array of dates.
Date issueDate = schedule.date(0);
Date firstCoupon = schedule.date(1);
Date notionalCoupon =
schedule.calendar().advance(firstCoupon,
-schedule.tenor(),
schedule.businessDayConvention(),
schedule.endOfMonth());
List <Date> newDates = schedule.dates();
newDates[0] = notionalCoupon;
//long first coupon
if (notionalCoupon > issueDate)
{
Date priorNotionalCoupon =
schedule.calendar().advance(notionalCoupon,
-schedule.tenor(),
schedule.businessDayConvention(),
schedule.endOfMonth());
newDates.Insert(0, priorNotionalCoupon);
}
return(newDates);
}