I'm not entirely sure how useful this is going to be for you, but I've converted your script to use binary variables.

Code:
alias -l list_chan {
  bset -t &fii 1 <b> $+ $network ( $+ $me $+ )</b><br> <table>
  var %a = 1, %b = $chan(0)
  while %a <= %b {
    var %c = 1, %d = $nick($chan(%a),0)
    while %c <= %d {
      bset -t &fiinick $calc($bvar(&fiinick,0) + 1) <option> $+ $nick($chan(%a),%c).pnick $+ </option>
      inc %c
    }
    ;<option>&#160;</option>
    bset -t &fii $calc($bvar(&fii,0) + 1) <tr><td><select size="8">
    bcopy &fii $calc($bvar(&fii,0) + 1) &fiinick 1 -1 
    bset -t &fii $calc($bvar(&fii,0) + 1) </select></td><td><b> $+ $chan(%a) $+ </b> $&
      <br>---Topic: $&
      $chan(%a).topic $+ <br>---Mode: $chan(%a).mode $+ <br>---Key: $&
      $chan(%a).key $+ <br>---Limit: $chan(%a).limit $+ <br>---Users: $&
      $nick($chan(%a),0,a) <b>(@: $nick($chan(%a),0,o) $+ ;%: $&
      $nick($chan(%a),0,h) $+ ;+: $nick($chan(%a),0,v) $+ )</b></td></tr><tr><td>&#160;</td><td>&#160;</td></tr>
    inc %a
  }
  bset -t &fii $calc($bvar(&fii,0) + 1) </table>
}


Now you just need to decide whether a binary variable is appropriate for what you need to do.