Have a set of two - five ranges.
Each channel should have a variable that sets its preferred range. Of course you don't know that variable the first time thru, but the next time thru, unless the value varies widely, you're already on the right track.
For each channel:
While (Not In Range)
Current out = Preferred Range [chan]
V = read voltage
if (V > Vmax)
Not In Range = true
Preferred Range [ chan ] = Preferred Range [ chan ] -1
if (V < Vmin )
Not In Range = true
Preferred Range [ chan ] = Preferred Range [ chan ] +1
if (Preferred Range [ chan ] < MinRange or Preferred Range [ chan ] > MaxRange)
error - resistance out of range
} en
d while (repeat if Not In Range)
} end for (next channel )
That's assuming you're doing a single channel - if you're doing a scan, just scan all channels, check all channels for out-of-range values, adjust output ranges for those that need it, and re-scan until all channels are in range, or you run out of ranges (error).
Bes sure to allow for settling time of the current output device.
HTH