The number of pulses needed to program a memory cell may vary in different embodiments based on factors such as whether the substrate channel or the source or drain are coupled to a ground during programming, whether the channel potential rises as electrons are lost, and the degree to which electrons already on the floating gate electrostatically repel other electrons.