Abstract: An algorithm is presented for carrying out decomposition of electronic charge density into atomic contributions. As suggested by Bader [R. Bader, Atoms in Molecules: A Quantum Theory, Oxford University Press, New York, 1990], space is divided up into atomic regions where the dividing surfaces are at a minimum in the charge density, i.e. the gradient of the charge density is zero along the surface normal. Instead of explicitly finding and representing the dividing surfaces, which is a challenging task, our algorithm assigns each point on a regular (x,y,z) grid to one of the regions by following a steepest ascent path on the grid. The computational work required to analyze a given charge density grid is approximately 50 arithmetic operations per grid point. The work scales linearly with the number of grid points and is essentially independent of the number of atoms in the system. The algorithm is robust and insensitive to the topology of molecular bonding. In addition to two test problems involving a water molecule and NaCl crystal, the algorithm has been used to estimate the electrical activity of a cluster of boron atoms in a silicon crystal. The highly stable three-atom boron cluster, B3I is found to have a charge of ! 1.5 e, which suggests approximately 50% reduction in electrical activity as compared with three substitutional boron atoms.