Why does this give a choicepoint?

Yes, with:

translate(X, Y).

The thing to avoid is what I like to call unwanted choicepoints, when we feel the program should be cleverer :grinning: - example.