I simple use an updating timer the timer triggers once when I receive a reply from the server.
Code:
on *:connect:lagbar
alias lagbar {
  window -Bphk +d @LagBar 0 0 75 24
  dll tbwin.dll Attach @lagbar 
  var %z = $dll(tbwin.dll, GetTBInfo, NOT_USED), %w = $gettok(%z, 1, 32), %h = $gettok(%z, 2, 32)
  lagmove %w %h
  dll tbwin.dll OnSize /lagmove
  drawrect -nrf @lagbar $rgb(face) 1 0 0 500 500
  lagchk
  window -a @lagbar
}
alias lagmove window @lagbar $calc($1 - 80) $int($calc(($2 - 24) / 2)) 75 24
alias lagdisp {
  var %t = Latency: $1 $+ s
  drawrect -nrf @lagbar $rgb(face) 1 0 0 500 500
  drawtext -n @lagbar 1 Tahoma -7 $int($calc((75 - $width(%t, Tahoma, -7)) / 2)) 13 %t
  drawrect -n @lagbar 1 1 0 2 75 12
  drawrect -nf @lagbar 10 1 2 4 $int($calc($1 * 71)) 8
  drawdot @lagbar
}
alias lagchk .notice $me lagchk $ticks
on me:^*:notice:lagchk &:?:{
  lagdisp $round($calc(($ticks - $2) / 1000),2)
  .timerlagchk -i 1 3 lagchk
  haltdef
}