well it certainly is easier (by the way you dont need the if clause you can just sum your rounding point to the division and use just ceil or floor depending in wether you used subtraction or addition)
how to do this witout the second object.
Tools work differently form connections, when i first saw this post i tought not really worth it. But hwoever you can do this with a proxy that is not visible then move the shape under the proxy via a shape transform now you have a proxy tahts invisible connected to the shape thats driven by the proxys child. Offcourse i suspect this does not work snce you cant animate the damn thing.
Ok you can do this also with expressions AND not using a connection again a kludge, and again you cant animate the damn thing.
You can use a proxy attribute Butthen you cant us e normal tools to animate.
then you can redirect the selection. That would actually work but its a bit painfull to keep in sync. Its actually easir to trigger rotation snap when you select the object.
A constraint MIGHT work tiough would need to test, but i bet it realy does not.
You could worite your own dag node tough.
Or you could wirte your own tool and ovveride the tool of your object with that