- the latest in-range bar with a NaN close was dropped before the curr_date
cutoff, so the previous trading day looked like the latest; dates were also
compared without timezone normalization
- normalize bar dates and curr_date to naive midnight (per element, so 5-year
ranges spanning DST and non-US positive-offset markets keep their local date),
then raise NoMarketDataError on a missing latest close rather than falling back
- split the fill step (_fill_price_gaps) from date/price normalization so the
latest bar can be inspected before incomplete rows are dropped #1201