A bus crew scheduling system which uses mathematical programming is described. The system is based on a set covering formulation, and includes a number of heuristics to keep the problem to a manageable size. It has been in regular use by London Buses Ltd. since the beginning of 1985 and has been adopted by other bus companies. The crew scheduling problem is described, the solution process is presented and results are discussed briefly.