The Hive's TimestampColumnVector has a bad design with millis from 1970 and nanos within the second. This is consistent with java.sql.Timestamp, but it causes the millis to overlap with the nanos.
ORC-306 changed the behavior from:
millis: xxxx000, nanos: 123456789
millis: xxxx123, nanos: 123456789
that means that addition of the millis & nanos doubles the contribution of the millis.