You're right. A second counter should fix it:

Code:
alias banall {
  if (!$ial($2)) return
  var %i = 1, %g = 1, %addresses
  while (%i <= 10) {
    %addresses = %addresses $address($2,%i)
    if (%g == $modespl) {
      mode $1 + $+ $str(b,%g) %addresses
      %addresses =
      %g = 0
    }
    inc %g
    inc %i
  }
  if (%addresses) mode $1 + $+ $str(b,$numtok(%addresses,32)) %addresses
}