def METHOD_NAME(self):
    warnings.filterwarnings('error')
    time_remaining_max = 10.0 # assume 10h - for cases where current approx. 0A
    time_remaining = time_remaining_max
    try:
        if len(self.last_currents) > 0:
            current = numpy.mean(self.last_currents)
            if self.full_charge_capacity != None and self.remaining_capacity != None:
                if self.charging:
                    time_remaining = round((self.full_charge_capacity - self.remaining_capacity) / abs(current), 3)
                else:
                    time_remaining = round(self.remaining_capacity / abs(current), 3)
            else:
                pass
        else:
            pass
    except ZeroDivisionError as e:
        rospy.logerr("ZeroDivisionError: current is 0.0: {}".format(e))
    except Warning as w:
        rospy.logerr("Warning: {}".format(w))
    except Exception as e:
        rospy.logerr("Exception: {}".format(e))
    # rospy.logdebug("calculate_time_remaining")
    # rospy.logdebug("time_remaining_max: {}".format(time_remaining_max))
    # rospy.logdebug("time_remaining: {}".format(time_remaining))
    # rospy.logdebug("self.last_currents: {}".format(self.last_currents))
    # rospy.logdebug("current: {}".format(current))
    # rospy.logdebug("self.full_charge_capacity: {}".format(self.full_charge_capacity))
    # rospy.logdebug("self.remaining_capacity: {}".format(self.remaining_capacity))
    # rospy.logdebug("self.charging: {}".format(self.charging))
    return min(time_remaining, time_remaining_max)