Preprocessing is an essential aspect for zero-and double-difference GPS software packages. In the first case we have to produce "clean" code and phase observations on the single receiver and single satellite level, in the second case solely double-difference observations have to be checked. The checks usually are performed on the "minimum constellation" level, i.e., the single receiver level for zero-, the single baseline level for double-difference packages. When analyzing the code observations stemming from a permanent array, this step may be performed in a much more efficient and robust way because the known geometry and, if available, the known atmospheric delays may be removed from the original observations. In an array of n receivers observing m satellites this leaves us with n · m observations and n + m − 1 unknowns (the clock parameters relative to a reference clock). The degree of freedom of f = n · m − (n + m − 1) (for, e.g., n = 10 and m = 10, we have f = 81) allows for a very robust detection of outliers and enables generating a satellite clock file based on code measurements (with very much reduced multipath and noise characteristics). A similar step may be performed with the differences of phase observations between subsequent epochs. Using an analogous procedure as in the case of code observations we may generate phase files with all cycle slips flagged or, in the case of "small-area" arrays, even with cycle slips repaired. Both steps, phase and code cleaning, are performed in the same program unit. We discuss this new development and present first results and applications using data from the AGNES (Automated GPS Network Switzerland) and the IGS (International GPS Service) Networks.