code: def start(backdate=None):
      if f.s.cum:
          raise StartError("Already have stamps, can't start again (must reset).")
      if f.t.subdvsn_awaiting or f.t.par_subdvsn_awaiting:
          raise StartError("Already have subdivisions, can't start again (must reset).")
      if f.t.stopped:
          raise StoppedError("Timer already stopped (must open new or reset).")
      t = timer()
      if backdate is None:
          t_start = t
      else:
          if f.t is f.root:
              raise BackdateError("Cannot backdate start of root timer.")
          if not isinstance(backdate, float):
              raise TypeError("Backdate must be type float.")
          if backdate > t:
              raise BackdateError("Cannot backdate to future time.")
          if backdate < f.tm1.last_t:
              raise BackdateError("Cannot backdate start to time previous to latest stamp in parent timer.")
          t_start = backdate
      f.t.paused = False
      f.t.tmp_total = 0.
      f.t.start_t = t_start
      f.t.last_t = t_start
      return t