else {
final Handle<YieldTermStructure> termStructure = index_.termStructure();
QL.require(termStructure != null , NULL_TERM_STRUCTURE); // QA:[RG]::verified
final Date today = settings.evaluationDate();
final Date fixing_date = fixingDate();
final IndexManager indexManager = IndexManager.getInstance();
if (fixing_date.lt(today)) {
final double pastFixing = indexManager.getHistory(index_.name()).get(fixing_date);
QL.require(!Double.isNaN(pastFixing), "Missing fixing"); // TODO: message
return pastFixing;
}
if (fixing_date.equals(today)) {
try {
final double pastFixing = indexManager.getHistory(index_.name()).get(fixing_date);
if (! Double.isNaN (pastFixing))
return pastFixing;
} catch (final Exception e) {
; // fall through and forecast
}