Code:
 dialog away2 {
  title "away system"
  size -1 -1 195 111
  text "reason¬", 1, 20 20 41 15
  edit "", 2, 66 18 110 20, autohs
  button "away", 3, 17 81 75 17
  text "interval¬", 5, 19 44 45 15
  edit "", 6, 66 42 63 20
  box "setup", 7, 5 -1 185 108
  text "hours", 8, 134 44 40 16
  button "cancel", 9, 103 81 75 17, cancel
  box "", 10, 7 65 183 8
}
alias awaysys { if (!%away) dialog -mod away2 away2 | if (%away) awayback }
;dialog events
on *:dialog:away2:init:0: {
  if (%away == on) {
    did -a $dname 2 %away.r
    did -a $dname 6 $calc(%away.timer * 60)
    did -b $dname 4
  }
}
on *:dialog:away2:sclick:3: {
  if (!$server) halt
  if (!$did(2).text) halt
  if (!$did(6).text) halt
  set %away.r $did(2).text
  set %away.timer $calc($did(away2,6).text * 60)
  set %away on
  set %left left; $time(h:nnt)
  ame now idle: %away.r %left
  .away %away.r
  .timeraway 0 $calc(%away.timer * 60) stillafk
  set %away.leave $ctime
  dialog -x away2 away2
}
alias awayback {
  %away.back = $dur($calc($ctime - %away.leave))
  .timeraway off
  if ($server) .away
  unset %away 
  if ($server) && ($chan(0)) ame has returned: %away.r %away.back
  unset %away.*
  unset %left
}
alias stillafk {
  %stillafk.dur = $dur($calc($ctime - %away.leave))
  ame still idle: %away.r elapsed: %stillafk.dur %left
}
alias dur {
  if ($1 < 60) { .return $round($1-,0) $+ s }
  else { return $replace($duration($1-),wk,w,secs,s,mins,m,hrs,h,days,d,wks,w,sec,s,min,m,hr,h,day,d) }
}


I set the timer for "1" hour and after 1 hour I get the following message:

weakness : still idle : afk again elapsed : 59m 59s left; 9:10p

instead of the time returning 60 minutes or 1 hour. Any ideas as to why ?