Even if you have a separate limit switch set to both x++ and x--, triggering either one will prevent you from moving again in the opposite direction from the direction that was triggered.
Shouldn't there be a way that mach knows which direction it was moving when it triggered the limit, and then allow you to move in the opposite direction without triggering again? otherwise whats the point for having the option to have both inputs?