Lag won't affect the timer at all. The time parameter is only used when the timer is originally set, all other occasions it'll be working off the 86400 second delay only. It's still not going to be on time though since timers are pretty inaccurate (plus timers ignore the seconds portion of the <time> parameter so the code couldn't be used as-is anyway).

Still, triggering the timer every second and having a peice of code run and fail 86399 times a day is unnecessary too.

Simple solution:
Code:
on *:join:#:if ($nick == $me) && (!$timer(mass)) .timermass 23:06 1 50 massrun

alias massrun {
  .amsg Time for Mass
  .timermass 23:06 1 50 massrun
}


Spelling mistakes, grammatical errors, and stupid comments are intentional.