@@ -695,9 +695,10 @@ void FixingDateGetter::visit(QuantExt::SubPeriodsCoupon1& c) {
695695
696696void FixingDateGetter::visit (IndexedCoupon& c) {
697697 // the coupon's index might be null if an initial fixing is provided
698- if (c.index ())
699- requiredFixings_.addFixingDate (c.fixingDate (), IndexNameTranslator::instance ().oreName (c.index ()->name ()),
700- c.date ());
698+ if (c.index ()) {
699+ bool isTodaysFixing = Settings::instance ().evaluationDate () == c.fixingDate ();
700+ requiredFixings_.addFixingDate (c.fixingDate (), IndexNameTranslator::instance ().oreName (c.index ()->name ()), c.date (), false , !isTodaysFixing);
701+ }
701702 QL_REQUIRE (c.underlying (), " FixingDateGetter::visit(IndexedCoupon): underlying() is null" );
702703 c.underlying ()->accept (*this );
703704}
@@ -772,9 +773,11 @@ void FixingDateGetter::visit(CommodityCashFlow& c) {
772773
773774void FixingDateGetter::visit (BondTRSCashFlow& bc) {
774775 if (bc.initialPrice () == Null<Real>() || requireFixingStartDates_) {
775- requiredFixings_.addFixingDate (bc.fixingStartDate (), bc.index ()->name (), bc.date ());
776+ bool startTodaysFixing = Settings::instance ().evaluationDate () == bc.fixingStartDate ();
777+ requiredFixings_.addFixingDate (bc.fixingStartDate (), bc.index ()->name (), bc.date (), false , !startTodaysFixing);
776778 }
777- requiredFixings_.addFixingDate (bc.fixingEndDate (), bc.index ()->name (), bc.date ());
779+ bool endTodaysFixing = Settings::instance ().evaluationDate () == bc.fixingEndDate ();
780+ requiredFixings_.addFixingDate (bc.fixingEndDate (), bc.index ()->name (), bc.date (), false , !endTodaysFixing);
778781 if (bc.fxIndex ()) {
779782 requiredFixings_.addFixingDate (bc.fxFixingStartDate (),
780783 IndexNameTranslator::instance ().oreName (bc.fxIndex ()->name ()), bc.date ());
0 commit comments