The main confusing part in C about 3dTsmooth is that the pointer to the weighting function is used instead of calling the function directly. In my reading of the code, it does not jump from one set to the next, as you had guessed. The hamming function, like the other functions, provides a moving weighted average of some sort as it moves through time a single time point at a time. Each iteration through time, it uses the specified kernel size to weigh the time points before, during and after, in order to replace that time point. The hamming function (hamming_window()) uses a cosine function for its smoothing operation while the default 3 point linear filter is a bit easier to understand in the help.