I think I can see what is going on. It is a case of asynchronous commands stepping on each other. The reason I say that is because I tried it out and I was getting $ and % as well.
Since there is a delay needed in the key presses for the game to pick up the keys, the output is not instant. The shift key is being held down and released at various times and while it is being either held down or released the macro is being executed again. So, any time the macros overlap where the shift key is involved, you will get mixed results. I hope this is making sense... kind of hard to explain
The API respects the keyboard state (both virtual and hardware), so there's no easy way around this one.
The only thing I can suggest that may help in this case is to un-check the box labeled, 'allow other commands to execute while this one is running' on the command screen. That will prevent your macros from overlapping (well, kinda). You will also want to get the beta:
http://www.voiceattack.com/beta and check the box on the options screen labeled, 'cancel blocked commands'. This will keep buffered 'spammed' 1 keys from simultaneously trying to execute when the block is released:
Without 'cancel blocked commands': 1@#451@#451@@###445551@#45511@@###44555
With 'cancel blocked commands': 1@#451@#451@#451@#451@#45
Wondering if 'cancel blocked commands' should be the default from here on out