anchor.diff:  { TmFilterEvaluator }
   
   procedure TmFilterEvaluator.StartEvaluation(aFilter: TmFilter);
  +  procedure CheckValuesForBeetween (const aNumOfValues : integer);
  +  begin
  +    if aNumOfValues <> 2 then
  +      raise Exception.Create('BETWEEN operator needs 2 values to perform evaluation.');
  +  end;
  +
   var
     i : integer;
  -  start, stop : integer;
     str : string;
  -  tmpDouble : double;
  +  sList : TStringList;
  +  iList : TIntegerList;
  +  dList : TDoubleList;
   begin
     FreeAndNil(FValuesAsStrings);
     FreeAndnil(FValuesDictionary);
  
positive.code:   else
    if FCurrentFilter.FilterOperator = foBetween then
    begin
      start := VarArrayLowBound(FCurrentFilter.Value, 1);
      stop := VarArrayHighBound(FCurrentFilter.Value, 1);
      if (stop - start) <> 2 then
        raise Exception.Create('BETWEEN operator needs 2 values to perform evaluation.');
  
      if FCurrentFilter.DataType = fdtString then
      begin
        FMinStrValue := VarToStr(FCurrentFilter.Value[start]);
        FMaxStrValue := VarToStr(FCurrentFilter.Value[stop]);
      end else if aFilter.DataType = fdtDate then
      begin
        tmpDouble := VarAsType(FCurrentFilter.Value[start], vardate);
        FMinDoubleValue:= trunc(tmpDouble);
        tmpDouble := VarAsType(FCurrentFilter.Value[stop], vardate);
        FMaxDoubleValue:= trunc(tmpDouble);
      end else if aFilter.DataType = fdtTime then
      begin
        tmpDouble := VarAsType(FCurrentFilter.Value[start], vardate);
        FMinDoubleValue:= tmpDouble - trunc(tmpDouble);
        tmpDouble := VarAsType(FCurrentFilter.Value[stop], vardate);
        FMaxDoubleValue:= tmpDouble - trunc (tmpDouble);
      end else if (aFilter.DataType = fdtDateTime) then
      begin
        FMinDoubleValue:= VarAsType(FCurrentFilter.Value[start], vardate);
        FMaxDoubleValue:= VarAsType(FCurrentFilter.Value[stop], vardate);
      end else if aFilter.DataType = fdtInteger then
      begin
        FMinIntegerValue:= VarAsType(FCurrentFilter.Value[start], varinteger);
        FMaxIntegerValue:= VarAsType(FCurrentFilter.Value[stop], varinteger);
      end else if aFilter.DataType = fdtFloat then
      begin
        FMinDoubleValue:= VarAsType(FCurrentFilter.Value[start], vardouble);
        FMaxDoubleValue:= VarAsType(FCurrentFilter.Value[stop], vardouble);
      end;
    end;
  end;
  
negative.code: 
  implementation
  
  uses
    mIntList, mDoubleList;
  
  { TmFiltersEvaluator }
  
  constructor TmFiltersEvaluator.Create;
  