<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _derive_charge(self, config):
 """Use a temperature window to identify the roast charge. The charge will manifest as a sudden downward trend on the temperature. Once found, we save it and avoid overwriting. The charge is needed in order to derive the turning point. :param config: Current snapshot of the configuration :type config: dict :returns: None """

        if self._roast.get('charge'):
            return None
        self._window.append(config)
        time, temp = list(), list()
        for x in list(self._window):
            time.append(x['time'])
            temp.append(x['bean_temp'])
        slope, intercept, r_value, p_value, std_err = linregress(time, temp)
        if slope < 0:
            self._roast['charge'] = self._roast['last']
            self.add_roast_event({'event': 'Charge'})
            return config
        return None