We present a method for computing the number of steps needed to compute a lazy first order functional program {\tt e} (to an approximation of its value). The method itself is described as a lazy functional program. Moreover, it is {\it compositional}, because it is defined by recursion on the structure of {\tt e}. In other words, the number of steps needed to compute {\tt e} is described in terms of the number of steps the parts of {\tt e} need. (This is in constrast with the obvious operational method to define an interpreter and count the number of steps that it needs.) The equations that define the analysing program can also be used when reasoning about time complexity of lazy functional programs. Two simple examples are given at the end of the paper.