$idle returns the number of seconds you have been idle in mirc for, so its always zero if you do a command to see what it is, becuase you just did a command.
thats incorrect;
it shows your idle time in that channel; echo doesn't send anything to the server so it doesn't count.
Tested here and works quite well.
edit:
even if what you suggested would be true, activating the timer would also be a command; and the result would still be 0