From f7167a04e4566df8ff3ef244514e8927aba02b7b Mon Sep 17 00:00:00 2001 From: jmboyd1 Date: Sat, 4 Jul 2026 12:34:36 +1000 Subject: [PATCH] Make Coupon::accruedDays consistent with accruedPeriod in the ex window Coupon::accruedPeriod returns a negative year fraction between the ex-coupon date and the payment date, but accruedDays kept counting positive days from accrual start, so the two reported opposite signs for the same settlement. accruedDays now mirrors the accruedPeriod branch and returns minus the days from settlement to accrual end. --- ql/cashflows/coupon.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ql/cashflows/coupon.cpp b/ql/cashflows/coupon.cpp index 9b8ef56367..f94f1402eb 100644 --- a/ql/cashflows/coupon.cpp +++ b/ql/cashflows/coupon.cpp @@ -71,6 +71,8 @@ namespace QuantLib { Date::serial_type Coupon::accruedDays(const Date& d) const { if (d <= accrualStartDate_ || d > paymentDate_) { return 0; + } else if (tradingExCoupon(d)) { + return -dayCounter().dayCount(d, std::max(d, accrualEndDate_)); } else { return dayCounter().dayCount(accrualStartDate_, std::min(d, accrualEndDate_));