if you're asking if negative input is legal, yes it is.
To simplify it, it's similar to how modulo operates in C.
If you do:
int x = (1-3) % 5; // -2 % 5
you'll get "-2" as a result, but what you're actually
interested in is:
int x = (1-3 + group_order) % 5; // (-2 + 5) % 5 = 3 % 5 == 5
group_order == 5, and you'll get 3 as a result...
Yes, I know.
. That is certainly a problem.
EDIT: we are not certain if the 3 resulting from a -2 is process the same way as we would give it another try.