Robert: The real problem is that all these commands/macros/whatever are all basically 'pass it on" functions.
They don't CALL the command and then get control back after the command (or whatever) is done. So they have no way to affect the cursor positioning after the processing is done. And the command(s) being done all do their own requests for cursor positioning.
As I've said before, cursor positioning is a free-for-all, everyone tosses their requests in a bucket, the bucket gets examined just before control is passed back to the user, and a winner is declared, based on various request priorities.
Attempts to override this are very difficult. Look how many attempts it took to get the "Maintain screen position after line commands" to work.
And the semi-colon is stripped out and thrown away very early, before line commands and way before a primary command is even thought about.