Code:
#showtooltip
/cast [mod:alt, @player] [@mouseover, help] [help] [target=targettarget, help] [@player] Remove Curse
Added the first conditional (use on self when pressing Alt) and shortened the rest: @ is a shorthand for "target=", and exists is implied by help. It's only necessary when you specify a target without other filters, for later conditionals to be able to trigger.
I also removed the spell name after #showtooltip, as the @player makes sure there's always something the macro will try to execute, and thus display. But by letting the macro decide, it will also show whether the mouseover or target's target is out of range (keybind text turning red in standard interface)
The [] empty bracers are to blame. The first line checks whether you don't press a modifier, that's correct, if not, go to second conditional - which is just "do the standard behavior, as if you clicked the ability without macro".
Thus, Counterspell is used on your (hostile) target.
The third line
does trigger, but Counterspell is already on CD by then.
I'd write it like this:
Code:
#showtooltip
/cast [mod:shift,@focus] [mod:alt,@mouseover] [] Counterspell
All in one line. It's usually preferable for readability to catch modifiers first, then fall back to standard functionality when those don't apply.
Note: all of this was written while waiting for, and sitting in the bus, so it wasn't tested for mistakes in the game.