I've attached a very simple program that's disobeying (as far as I can tell) the Max order of operations. In example1.maxpat, there's a matrix, and two "getcell" messages that query the matrix. Max supposedly evaluates depth-first and right-to-left, which would mean that the rightmost getcell fires first, followed by the matrix's response; then the other getcell message would fire, followed by the matrix's response.
Instead, as is revealed by the print object I've included, the getcell messages both fire, and then the matrix objects fire.
How can I fix this? It's really a problem for me, because I want to do different things with the results of the two "getcell" queries. In example2.maxpat, I've tried to use a gate to route the result of the first query to one place, and the result of the second to another. But as you can see, both messages from the matrix always get routed to the same outlet of the gate.