Hi.  I use gaim_applet in a vnc session, which for some reason means X always reports 0 idle time.  So I'm pretty much forced to use gaim's idle time, which I consider broken in its current state.  The idle time should not just be the time since the last message sent, but rather since the last interaction with gaim.  At the very least, there should be a convenient way to reset it to 0 other than to send myself an IM. 
So I downloaded the source and hacked in this functionality.  Basically, clicking on the applet button sets a global that I put in and the idle time is based on this time, not on the time since the last message.  So the applet button becomes the way to set the idle time to 0.
Here is applet.c.diff:
> #include <time.h>
>  last_clicked=time(NULL);
Here is gaim.h.diff:
> extern unsigned int last_clicked;
Here is idle.c.diff:
> unsigned int last_clicked=0;
<   idle_time = t - gc->lastsent;
>   //idle_time = t - gc->lastsent;
>   if(last_clicked==0)
>    idle_time=t-gc->lastsent;
>   else
>    idle_time=t-last_clicked;
Bon Apetit.