Fluorescence correlation spectroscopy (FCS) is a powerful spectroscopic technique for studying samples at dilute fluorophore concentrations down to single molecules. The standard way of data acquisition, at such low concentrations, is an asynchronous photon counting mode that generates data only when a photon is detected. A significant problem is how to efficiently convert such asynchronously recorded photon count data into a FCS curve. This problem becomes even more challenging for more complex correlation analysis such as the recently introduced combination of FCS and time-correlated single-photon counting (TCSPC). Here, we present, analyze, and apply an algorithm that is highly efficient and can easily be adapted to arbitrarily complex correlation analysis.