code: def closed(self, user):
          
          decision = False
          for record in self.history:
              # Completely ignore older changes
              if record["when"] < self.options.since.date:
                  continue
              # Look for status change to CLOSED (unless already found)
              if not decision and record["when"] < self.options.until.date:
                  for change in record["changes"]:
                      if (change["field_name"] == "status"
                              and change["added"] == "CLOSED"
                              and record["who"] in [user.email, user.name]):
                          decision = True
              # Make sure that the bug has not been later moved from CLOSED.
              # (This would mean the bug was not closed for a proper reason.)
              else:
                  for change in record["changes"]:
                      if (change["field_name"] == "status"
                              and change["removed"] == "CLOSED"):
                          decision = False
          return decision
docs: Moved to CLOSED and not later moved to ASSIGNED