proc timeB {varname seconds} { upvar $varname x set x [clock seconds] after [::tcl::mathop::* $seconds 1000] [list timeB $varname $seconds] } proc onChange {varname empty op} { upvar $varname x puts $x } timeB foobar 1 trace add variable foobar write onChange vwait forever