I have changed it now so that it does does mix in the word after the caret, with those in front (loosely based on proximity) -- watch my appcast :)
I've been using this new version for a few days now and it's highly unpredictable. Can you reveal what algorithm you're using?
What I had in mind was prioritizing matches like this:
-0 +0 -1 +1 -2 +2
Where - indicates before the caret, and + after, and the number is the number of lines offset from the current line. Within those groups you just order by position in the line.