I have precisely the problem described in d6_term_node migration overwrites node changed timestamps:
The d6_node migration preserves the original 'changed' timestamp for nodes on migration. But, then the d6_term_node migration comes along and sets 'changed' to the import time for any nodes with term references.
The bug has been open for 4 years. As a novice, I do not know how to fix the problem.
A workaround is suggested in comment #28:
As a possible ugly work-around, add 0.01 to the timestamp (
'changed' += 0.01) to keep the existing value. Because php will treat these as != but when mysql goes to insert into an integer column in the DB, it will round down and set to the same value.
However I have been unable to find a simple example to crib from that performs this task. Pointers to a tutorial would be greatly appreciated.