That seems dicey to me. If by “approximately zero” you mean abs(mod(t, dt)) < ε for some ε, then if you make ε too small you risk outputting very infrequently (because your code only gets called at a discrete set of times t, which may not often be close to multiples of dt), and if you make ε too large then you risk outputting multiple times in the same dt time interval.
Why not do something like:
t = time()
if t >= last_output_time + dt
...output...
last_output_time = t
end
That way it will call the output routine as close as possible to intervals of dt, limited by the frequency of the times t where you perform this check.