Well, looks like mIRC doesn't like to delete multiple followed par lines on a dialog id.
Code:
dialog bX {
  title "bX"
  size -1 -1 30 145
  option dbu
  list 1, 5 5 20 145
}
alias bX+ {
  dialog -m bX bX
  var %bX = 1
  while (%bX <= 20) {
    did -a bX 1 %bX
    inc %bX
  }
}
alias bX++ {
  var %bX = 5
  while (%bX <= 15) {
    did -d bX 1 %bX
    inc %bX
  }
}

Supposedly, mIRC should delete 10 lines (from the 5th to the 15th line) but, actually, mIRC just deletes a half of it. As I said in the beginning and, as you can notice after executing those commands, mIRC only deletes impar lines. In this example, mIRC deletes lines 5, 7, 9, 11, 13 and 15 and leaves lines 6, 8, 10, 12 and 14. Even so, and as far as I know, this only happens for multiple followed lines.

That's all, keep it simple.