Causal and Non-causal filtering. Strange behavior I'm trying to understand the behavior of a causal filtering exemplified by figure below.



This behavior is making LDA (Linear Discriminant Analysis) misclassify our data, by clearly reverse the signal pattern at the highlighted box.
We need to alter the filtering method from non-causal (MATLAB filfilt function) to a causal (MATLAB filter function), but we face off this strange behavior. 

Can someone give us an idea for what is really happening?

EDIT: 


Motivation: Real-time processing.
-Note: Delays are expected, but the output causal filtered signal inside the red box seems to be very uncorrelated with the zero-phase filtered signal.
Band-pass cut-off frequency: $[0.16 - 1]\textrm{ Hz}$.
Signal: Electroencephalography @ $128\textrm{ Hz}$
the output causal filtered signal inside the red box seems to be very uncorrelated with the zero-phase filtered signal.


So let's look at this statement. Suppose the original, unfiltered signal is $x[n]$. Filtering this using filtfilt with a filter with impulse response $h[n]$ gives:
$$
y_{ff}[n] = h[-n] \star h[n] \star x[n]
$$
and filtering with just filter is:
$$
y_f[n] = h[n] \star x[n]
$$
so
$$
y_{ff}[n] = h[-n] \star y_f[n]
$$
Regardless of what $x[n]$ is, the 'correlation' between $y_f$ and $y_{ff}$ will look like the anticausal (perhaps anticausal + constant term) $h[-n]$.