From what I see in and the annotate procedure goes by looking at older and older commits, and when parts of the lines are equal, the older commit is taken.

I think that this makes the 'annotate' show, sometimes, "the earliest commit with that change", instead of "the last commit with that change".

Other VCS show in 'annotate' the last change in every given line. This is the behaviour I'd prefer, but I barely know anything about diff algorithms, so I hope someone takes the job of implementing this usual kind of annotate.