Assuming you’re not using either the
-seed_direction options in
tckgen, then streamlines will be bidirectional, and start in random directions. This means that the algorithm will first start from the seed region along some random direction, track as long as it can, then flip the streamline back to front and start tracking along the opposite direction from the seed point. So half the time, it will start in a ‘forward’ direction, half the time in the opposite direction, which would explain what you see.
If you specify
-seed_direction, then you can guarantee that the streamlines always start in what you consider the ‘forward’ direction, which should mean that they all behave as you expect. If you use the
-seed_unidirectional option, then the half of the tracks that start in the ‘wrong’ direction will be discarded, so those left will again behave as expected.
I hope this at least explains what’s likely going on…?