ate =EffDate = 20090827
MatDate = 20220829
Frequency = Semi-Annual
Payment
day of month = 29
Payment Date rule = Modified
Following
Payment Holiday Calendar = EUR
Resulting
payment dates (according to Summit):
20100226
20100830
20110228
20110829
20120229
20120829
20130228
20130829
20140228
20140829
20150227
20150831
20160229
20160829
20170228
20170829
20180228
20180829
20190228
20190829
20200228
20200831
20210226
20210830
20220228
20220829
I am guessing in this particular case that just
setting the Schedule to generate backwards from 20220829 and not setting firstDate or nextToLastDate might produce the correct result? However I
could produce other test cases where it would not work, for example
EffDate = 20090228
MatDate = 20220228
Payment Frequency = Annual
Payment day of month = 29
I
believe that adding an extra optional parameter to the Schedule constructor
would allow this case to be internally handled but not break any existing code:
Schedule(Date effectiveDate,
const Date& terminationDate,
const Period& tenor,
const Calendar& calendar,
BusinessDayConvention convention,
BusinessDayConvention
terminationDateConvention,
DateGeneration::Rule rule,
bool endOfMonth,
const Date& firstDate = Date(),
const
Date& nextToLastDate = Date()
int
annDayOfMonth = 0);
Setting
annDayOfMonth=31 is then the same as setting endOfMonth=true. Setting annDayOfMonth=29
or 30 will then trigger new functionality to generate schedules as above.
Chris
On Thursday, 31 October 2013, 22:12, Ferdinando M. Ametrano <[hidden email]> wrote:
may you please post target vector of dates to be reproduced?