Assessing bus service running times has been a difficult and expensive task for many urban bus operators. This has restricted the ability of operators to collect adequate data to identify problems and improve service levels. Passive Global Positioning System (GPS) devices offer a low-cost means of collecting large amounts of highly accurate data, to be used in an ongoing performance assessment program. Some programming skills are required to break continuous GPS data into information that is meaningful to a scheduler. This article provides an overview of a software application developed to process and analyze GPS datasets collected by a bus operator in Sydney, Australia, in 2002-2003. The data collection procedure and processing algorithms are described, and examples are presented of output produced by the software. The algorithm developed to process the GPS data worked well. We conclude that passive GPS is a cost-effective method of collecting data on performance. For operators running buses on five or more routes, system development costs could be recovered within two to three years.