: Wireless sensor networks have attracted great attention in research and industrial development due to its fast-growing application potentials. New techniques must be developed for sensor networks due to their lack of infrastructure support and the constraints on computation capability, memory space, communication bandwidth, and above all, energy supply. To prolong the life time of a battery-powered sensor network, an energy efficient routing algorithm for data collection is essential. We propose a new geographic routing algorithm that forwards packets from sensors to base stations along efficient routes. The algorithm eliminates the voids that cause non-optimal routing paths in geographic routing. It replaces the right-hand rule by distance upgrading. It is fully distributed and responds to topology changes instantly with localized operations. We formally prove the correctness of the algorithm and evaluate its performance by simulations.