Fix bug in IBA::circular_shift -- negative shifts didn't wrap correctly

Mod reflects, rather than wraps, at zero.