We present an efficient full-volume automatic dense-picking method for flattening seismic data. First local dips (stepouts) are calculated over the entire seismic volume. The dips are then resolved into time shifts (or depth shifts) using a nonlinear Gauss-Newton iterative approach that exploits fast Fourier transforms to minimize computation time. To handle faults (discontinuous reflections), we apply a weighted inversion scheme. The weight identifies locations of faults, allowing dips to be summed around the faults to reduce the influence of erroneous dip estimates near the fault. If a fault model is not provided, we can estimate a suitable weight (essentially a fault indicator) within our inversion using an iteratively reweighted least squares (IRLS) method. The method is tested successfully on both synthetic and field data sets of varying degrees of complexity, including salt piercements, angular unconformities, and laterally limited faults.