run the given `code` periodically at time `first+p*0`, `first+p*1`, `first+p*2`, etc. until this clock has reached the time `last`.
In case any of the instants `first+p*0`, `first+p*1`, `first+p*2`, etc. happen to be in the past when this is called or after the previous execution of `code`, respectively, do not run `code` for that instant.
In case `period.is_infinity`, run `code` once unless `first > last`.
etc. until this clock has reached the time `last`.
In case any of the instants `first+p*0`, `first+p*1`, `first+p*2`, etc. happen to
be in the past when this is called or after the previous execution of `code`,
respectively, do not run `code` for that instant.
In case `period.is_infinity`, run `code` once unless `first > last`.
return the number of times the `code` was run.