Error introduced by smoothing filter at the end of a processing block
A moving average filter is a FIR filter of equal weights 1/N and a FIR filter is a degeneralization of a IIR filter.
In a non realtime implementation, it is functionally equivalent if you consider the filter to be N samples delay, N samples lookahead or N1 samples delay and N2 = N-N1 samples look ahead. Pick whatever time philosophy makes sense in your head and minimize tedious indexing.
Matlabs filter() and filtic() functions provide the means for carrying the  result from block to block for IIR filtering. Sadly only single channel support.
If you use something like:
conv2(ones(5,1), 1, X, ‘full’);
You will get an output vector that is larger than the input vector. Those surplus samples are exactly what you need to add to the initial samples of the next block.