Your comments

There's a bug related to this behaviour.

If you press up/down while having a selection, and the cursor goes to an empty line (or a line that has less characters than the starting column number), and then you press up/down once more, it doesn't return the caret to the original column number (the way it would if you started without a selection).