* AfterRowColChange ltNow=datetime() if ltNow - this.tStartedLooking>1200 && 20*60 replace messages.read with .t. endif this.tStartedLooking=ltNowThere must be a downside to this, seems too simple (not checking whether the 20 minutes are actually spent with this form on top comes to mind, there may be other gotchas). Generally, if I need to know the time between two events that I can catch, I don't use a timer. Timer is for creating an event at a certain time (or at certain times), or for delayed action, not as good for catching whether (or when) something happened.