A battery charge controller and fuel gauge which accurately monitors the voltage, temperature, and charge and discharge current of a rechargeable battery, and calculates the battery's charge capacity and charge level. Each time the battery is fully discharged, any calculated charge level remaining is divided by subtracted from the previously calculated charge capacity. When the battery is fully charged, the charge level is set equal to the charge capacity. During subsequent charge and discharge, the current is converted to a coulomb count and added or subtracted from the charge level to maintain an accurate charge level. Fast charge inefficiency due to temperature is considered by subtracting a temperature proportional factor before the charge level of the battery is updated. The charge level, voltage and temperature are used to determine the optimal fast charge termination point to achieve full charge and prevent temperature abuse and overcharge. A fast charge is applied only if the battery is within proper voltage and temperature ranges. The charge controller includes a microcontroller circuit within the same battery pack as the battery, which is powered by the battery when AC power is unavailable. The microcontroller circuit consumes very little power, measures circuit errors to assure data accuracy, times periods of self-discharge and updates the charge level accordingly. The microcontroller circuit also includes memory to store the battery charge information and a communication port to provide the charge information to a computer system connected to the battery pack.