@@ -53,6 +53,39 @@ namespace QuantLib {
5353 if (dayCounter_.empty ())
5454 dayCounter_ = index_->dayCounter ();
5555
56+ // if isInArrears_ fix at the end of period
57+ Date refDate = isInArrears_ ? accrualEndDate_ : accrualStartDate_;
58+ fixingDate_ = index_->fixingCalendar ().advance (refDate, -static_cast <Integer>(fixingDays_),
59+ Days, Preceding);
60+
61+ registerWith (index_);
62+ registerWith (Settings::instance ().evaluationDate ());
63+ }
64+
65+ FloatingRateCoupon::FloatingRateCoupon (const Date& paymentDate,
66+ Real nominal,
67+ const Date& startDate,
68+ const Date& endDate,
69+ const Date& fixingDate,
70+ const ext::shared_ptr<InterestRateIndex>& index,
71+ Real gearing,
72+ Spread spread,
73+ const Date& refPeriodStart,
74+ const Date& refPeriodEnd,
75+ DayCounter dayCounter,
76+ bool isInArrears,
77+ const Date& exCouponDate)
78+ : Coupon(paymentDate, nominal, startDate, endDate, refPeriodStart, refPeriodEnd, exCouponDate),
79+ index_(index), dayCounter_(std::move(dayCounter)), fixingDays_(Null<Size>()),
80+ gearing_(gearing), spread_(spread), isInArrears_(isInArrears) {
81+ QL_REQUIRE (index_, " no index provided" );
82+ QL_REQUIRE (gearing_!=0 , " Null gearing not allowed" );
83+
84+ if (dayCounter_.empty ())
85+ dayCounter_ = index_->dayCounter ();
86+
87+ fixingDate_ = fixingDate;
88+
5689 registerWith (index_);
5790 registerWith (Settings::instance ().evaluationDate ());
5891 }
@@ -77,10 +110,12 @@ namespace QuantLib {
77110 }
78111
79112 Date FloatingRateCoupon::fixingDate () const {
80- // if isInArrears_ fix at the end of period
81- Date refDate = isInArrears_ ? accrualEndDate_ : accrualStartDate_;
82- return index_->fixingCalendar ().advance (refDate,
83- -static_cast <Integer>(fixingDays_), Days, Preceding);
113+ return fixingDate_;
114+ }
115+
116+ Natural FloatingRateCoupon::fixingDays () const {
117+ QL_REQUIRE (fixingDays_ != Null<Size>(), " FloatingRateCoupon::fixingDays() not given." );
118+ return fixingDays_;
84119 }
85120
86121 Rate FloatingRateCoupon::rate () const {
0 commit comments