An internal impedance of a battery (30) is automatically determined by operating a processor (13) to analyze current flowing through the battery to determine if a transient condition due to change of current is occurring and determining when the transient condition has ended. A voltage of the battery is measured while a steady current is being supplied by the battery. The present depth of discharge (DOD) of the battery is determined and a database is accessed to determine a corresponding value of open circuit voltage. The internal impedance is computed by dividing the difference between the measured voltage of the battery and the open circuit voltage at the present DOD by an average value of the steady current. A remaining run-time of the battery can be determined using a total zero-current capacity of the battery, integrating the current to determine a net transfer of charge from the battery, determining a value of total run-time that would be required to reduce the voltage of the battery to a predetermined lower limit, determining the duration of the integrating, and determining the remaining run-time by subtracting the duration of the integrating from the total run-time.