anchor.diff:      Name := aPrefix + FLD_DELTA;
       DataType:= vftFloat;
     end;
  +  for i := 2 to aValuesCount do
  +  begin
  +    with aFieldDefs.AddFieldDef do
  +    begin
  +      Name := aPrefix + FLD_DELTA + IntToStr(i);
  +      DataType:= vftFloat;
  +    end;
  +  end;
     with aFieldDefs.AddFieldDef do
     begin
       Name := aPrefix + FLD_UPRIGHT;
       DataType:= vftFloat;
     end;
  +  for i := 2 to aValuesCount do
  +  begin
  +    with aFieldDefs.AddFieldDef do
  +    begin
  +      Name := aPrefix + FLD_UPRIGHT + IntToStr(i);
  +      DataType:= vftFloat;
  +    end;
  +  end;
  +
     with aFieldDefs.AddFieldDef do
     begin
       Name := aPrefix + FLD_LIMIT;
  
positive.code:     end;
    end;
  
    MergeSort(FDataList, OnCompareData);
    MergeSort(FLimitsList, OnCompareEvents);
    lastValue := 0;
  
    currentLimitIndex:= -1;
  
    for i := 0 to FDataList.Count -1 do
    begin
  
negative.code:     procedure SetPropertyByFieldName(const aFieldName: String; const aValue : Variant);
      function AsObject: TObject;
  
      class procedure FillVirtualFieldDefs (aFieldDefs : TmVirtualFieldDefs; aPrefix : String; const aValuesCount : integer = 1);
      class function GetKeyField : String;
      procedure SetUpright(const aIndex: byte; const aValue : double);
      function GetUpright(const aIndex: byte): double;
  
      property Position : integer read GetPosition;
      property Highlight : TmUprightHighlightType read FHighlight;
    end;
  
  