- Dates were formatted with time.Unix (machine local zone), shifting the
trading day by one for any exchange in a different timezone. Use
meta.exchangeTimezoneName (IANA), falling back to meta.gmtoffset,
then UTC.
- Dividend/capital-gain/split CSVs were emitted in random order (JSON
object iteration). Sort rows by date.
- Yahoo occasionally emits the same chart timestamp twice; keep the
last occurrence (this drops the spurious CVSIX 2008-12-18 0.292 row
whose date is duplicated by the real 0.641 distribution).
- nil volume no longer panics (prints 0).
- Missing dividend/cap-gain amount still reports an error.