Code:
on *:SNOTICE:*client connecting*:{
  timer 1 5 ctcp $4 version
  $+(timerNo.Version.Reply.From.,$4) 1 15 notice $4 I did not receive a version reply from you $(|,) write $!+(noreplylog,$asctime(yyyy-mm-dd),.txt) $4 
}
on *:CTCPREPLY:VERSION*:{
  $+(timerNo.Version.Reply.From.,$nick) off
  write $+(versionlog.,$asctime(yyyy-mm-dd),.txt) $2-
  if ($read(versions.txt, s, $2)) { wallops Version Alert for $nick using $2- $read(versions.txt, s, $2) }
  else { halt }
}


try that...
I renamed the no version timers better to timerNo.Version.Reply.From.$nick, becuase just using the name $nick is pretty dodgy someone else is just as likely to use that for something else.
And I added the write to the noreply log to the timer for no replies, but i removed the "NO REPLY FROM" since its going to the no reply log, i felt that that was a bit silly to be saying.

If it gets more complexe i suggest you use $+(timerNo.Version.Reply.From.,$4) 1 15 no.reply.alias $4 in replace of the old timer and
alias -l no.reply.alias {
notice $1 I did not receive a version reply from you
write $+(noreplylog,$asctime(yyyy-mm-dd),.txt) $1
.. add or edit the code in here ...
}


PS: you do know mirc always comes back with a version reply dont you? [ well almost always smile ]