A few tips-
Regarding assigning parameters to negated values-
#1 = -#2 (Doesn't work)
#1 = [-#2] (Doesn't work)
#1 = [#2/-1] (Works)
Although there are no conditionals, to get conditional processing I often use L param in subroutine calls to conditionally execute code based on a variable being zero or non-zero. Its a hack but it works, see below.
This runs the subroutine one time if #106 is non-zero, doesn't run if #106 is zero.
M98 P1351 L[ROUND[[#106 + 0.00001]/[#106 + 0.00003]]]