Thank all you hero members for the valuable input. I found the needle in an adjacent haystack.

In pseudo code my moving filter looks something like this:

if Abs(Pos[P1]-Pos[c])>L then

AddData(Pos[P1],Signal[P1]);

if Abs(Pos[P2]-Pos[c])<=L then

AddData(Pos[P2],Signal[P2]);

where array Pos, Signal and L are 80 bit Extended in Delphi7.

On one of my test data sets the value of L happens to be a multiple of the stepsize (in general there is no constant stepsize). Therefore Abs(Pos[P1]-Pos[c]) can be exactly L. Again, this is no problem in D7.

However in 64 bit Doubles the positions deviate slightly around the intended value (i.e string '9.1' becomes 9.09999...). Therefore the number of points in the filter changes randomly, giving noticable effects in the end.

My new code looks something like:

if Abs(Round(1000*(Pos[P1]-Pos[c])))>kL then

AddData(Pos[P1],Signal[P1]);

if Abs(Round(1000*(Pos[P2]-Pos[c])))<=kL then

AddData(Pos[P2],Signal[P2]);

where integer kL:= Round(1000);

The multiplication with 1000 suits for my type of data but is rather arbitrary.

The second order polynomal filter indeed degrades slightly with 64 bit Doubles for internal data but this certainly has not a magnitude of multiple orders in the data. So this degradation stays invisible on the level of my data.

Some history: in the eighties I had the second desktop with a 80387 coprocessor at the former Philips physics labs, so I grew up with this kind of hardware. Why is this abandoned? Once I wrote one line of Pascal in assembler for speed reasons. Now there appear to be a lot of undocumented registers for unclear reasons. Then why not maintain the 80 bits cpu facilties?