Here it is.  Two parts of my m6 macro.  
I get the handle of my outputs in the beginning of the macro; but here is a rundown of what is going on.
--Move the POT down.
mc.mcSignalSetState(POTUp, 0)
mc.mcSignalSetState(POTDown, 1) 
rc = mc.mcSignalWait(inst, mc.ISIG_INPUT24, mc.WAIT_MODE_HIGH, ErrorWaitTime)
if rc ~= 0 then
   mc.mcCntlSetLastError(inst, "There was a problem moving POT down.")
   mc.mcSignalSetState(Alarm, 1)
   return 
end--POT down error check.
    
--Move the arm to the spindle.
mc.mcSignalSetState(ArmToHome, 0)
mc.mcSignalSetState(ArmToSpindle, 1) 
rc = mc.mcSignalWait(inst, mc.ISIG_INPUT26, mc.WAIT_MODE_HIGH, ErrorWaitTime)
if rc ~= 0 then
   mc.mcCntlSetLastError(inst, "There was a problem moving the arm to the spindle.")
   mc.mcSignalSetState(Alarm, 1)
   return 
end--Arm to spindle error check.
rc = mc.mcSignalWait(inst, mc.ISIG_INPUT#, mc.WAIT_MODE_HIGH, ErrorWaitTime)  
The "ErrorWaitTime" on the end of the call is a variable I have declared at the top of my macro.  It is read in seconds.  You can make it a variable or just put in an integer.  That is how long it waits before it continues on with the macro.  If it is left at 0 then it will wait indefinitely.