There is no generally accepted procedure for identifying ultradian pulsations in hormonal time series. We suggest an approach based on removing long-term trends, such as diurnal rhythms, from the series of observations; identifying peaks in the residual series; and resolving each peak, if appropriate, into overlapping secretory episodes. The first step uses a robust smoothing technique to generate a smoothed series that omits peaks or trends with time constants less than 6--12 h. The smoothed series is subtracted from the original, and in the second step their difference, the residual series, is examined for the presence of peaks. The standard deviation of the assay is calculated at each point, and the residuals are rescaled in terms of this unit. Peaks are identified as individual subseries elevated above the base line of duration n, all the points in which have magnitude at least G(n), where the values of G are cut-off criteria based on the width of the peak. Thus the algorithm selects both narrow high peaks and broader peaks that may be lower. The user selects the G(n) for each hormone based on theoretical considerations or a set of calibration data series. Points that meet these criteria are identified as belonging to peaks and flagged. To assure that the smoothing process is not influenced by runs of closely spaced peaks, these flagged points are then assigned a reduced weight, and the smoothing is repeated; the revised residuals are then reexamined. After these two steps are iterated until there are no further changes, each peak is examined once more to determine whether it can be resolved into more than one overlapping peak. Finally, the process collects statistics on the average frequency and amplitude of the peaks. We have developed computer programs to carry out these algorithms.