Here's one that I wrote that does all the magic for you:
;-------------------------------------------------------------------------------
; %1 = input - Time to convert
; #RESULT -  Time converted to #:##:## format
sub TM_ConvertTimeHourMinSec
  namespace push
  namespace local ctime
  set !hourpart %1 / 3600
  set !secpart ( %1 % 3600 ) % 60
  set !minpart ( ( %1 % 3600 ) / 60 )
  
  if !hourpart >= 10
    set #RESULT !hourpart , :
  else
    set #RESULT 0 , !hourpart , :
  if !minpart < 10
    set #RESULT #RESULT , 0
  set #RESULT #RESULT , !minpart , :
  if !secpart < 10
    set #RESULT #RESULT , 0
  set #RESULT #RESULT , !secpart
  namespace pop
return #RESULT
So at the beginning of the script, I make a note of the time %online_start_time
  set !temp #SCNT - %online_start_time
  gosub TM_ConvertTimeHourMinSec !temp ; time in H:MM:SS returned in #RESULT
What I typically do is have another counter that I use to update the display.  2, 3, 5, 10 seconds.  Whatever.  But you just monitor this counter to determine when you should call the above code and update the display.