def METHOD_NAME(self):
    rate = 0
    for player in self.players:
        if player.team.id:
            rate += 1
        else:
            rate -= 1
    progress = self.progress
    if ((progress == 1.0 and (rate > 0 or rate == 0)) or
            (progress == 0.0 and (rate < 0 or rate == 0))):
        return
    self.rate = rate
    self.rate_value = rate * TC_CAPTURE_RATE
    if self.finish_call is not None:
        self.finish_call.cancel()
        self.finish_call = None
    if rate != 0:
        self.start = reactor.seconds()
        rate_value = self.rate_value
        if rate_value < 0:
            self.capturing_team = self.protocol.blue_team
            end_time = progress / -rate_value
        else:
            self.capturing_team = self.protocol.green_team
            end_time = (1.0 - progress) / rate_value
        if self.capturing_team is not self.team:
            self.finish_call = reactor.callLater(end_time, self.finish)
    self.send_progress()