1. Why not modify S.S.1/S2 like this:
S2,
#R^LeftLever: ON ^Reward; ON^RewardLight; Z1 ---> S2 (NOTE: YOUR REDIRECTION WAS MISSING A '-')
#R^Magazine: Z2 ---> S2
Of course, you need another stateset to count these magazine responses. It will be very similar to your S.S.4.
2. Also, I'd move all the reward and signal code into a separat states that listens for Z1 only. This way, you keep switching the reward and signal on and off close to each other.
3. Third, I'd move all user messages to a separate stateset for clarity.