The last poster was right, you were looping through all remaining questions sending them one after another. in the on *:text:? event. ( bit odd you didnt see it my man that flu must have taken you down alot frown )

Anyway Try this....

Code:
on @*:text:!abductme:#:{
  set %question $calc($hfind(AS,$+(*,$address),0,w) + 1)
  if %question <= $lines(questions.txt) {
    .enable #input
    set %chan $chan
    question $nick $address %question
  }
  else .mode # +v $nick
}
#input off
alias question {
  set %address $2
  .msg $1 $read(questions.txt,$3)
  set %entry $gettok($read(questions.txt,$3),-1,32)
}
on *:text:*:?:{
  if %address = $address {
    .hadd -m AS $+(%entry,.,$address) $1-
    inc %question
    if (%question <= $lines(questions.txt)) {
      question $nick $address %question 
    }
    else {
      .disable #input
      .close -m $nick
      .mode %chan +v $nick
    }
  }
}
#input end