I wanted to point to the missing evaluation, so I posted the on text event as illustration, of course you need the on join event.

The on text is to msg the max peak, it's read only and returning absolute values (the peak record)... But you can calculate relative values - using read value and actual values $nick(#,0) / $ctime.

Here's an example, I also added that network val you want to use:
on *:join:#chan,#otherchan,...: {
  if ($nick(#,0) > $($+(%,peak.,$chan,.,$network),2)) {
    set $+(%,peak.,$chan,.,$network) $nick(#,0) $ctime

on *:text:!peak:#chan,#otherchan,...: {
  var %val = $($+(%,peak.,$chan,.,$network),2)
  if (%val) {
    msg $chan On $+( $date($gettok(%val,2,32),mmm dd yyyy) $&
    $chr(40), $duration($calc($ctime - $gettok(%val,2,32)),2) ago, $chr(41)) $&
     there were $gettok(%val,1,32) users $&
    (thats $round($calc(100 - $nick($chan,0) / $gettok(%val,1,32) * 100),0) $+ % more than now) $&
    in $chan $+ !

This will return something like:
On Jul 07 2007 (12mins ago) there were 75 users (thats 3% more than now) in #test!

Anyway, I'd prefer the code with hash tables...