anchor.diff:      destructor Destroy; override;
   
       function Add : TmUprightEvent;
  -    procedure Calculate;
  +    procedure Calculate(const aDoSort : boolean = true);
       function Count : integer;
       procedure Clear;
       function GetDatum(const aIndex : integer) : IVDDatum;
  
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:     Result := 1;
  end;
  
  function TmUprightEvent.GetValue(const aIndex: byte): double;
  begin
    Result := FValues[aIndex];
  end;
  
  procedure TmUprightEvent.SetValue(const aIndex: byte; const aValue: double);
  begin
    FValues[aIndex] := aValue;
  end;
  
  function TmUprightDatum.GetDatumKey: IVDDatumKey;
  begin
    Result := FKey;
  end;
  
  function TmUprightDatum.GetPropertyByFieldName(const aFieldName: String): Variant;
  var
    i : integer;
  begin
    Result := Null;
    if aFieldName = FLD_POSITION then
      Result := FKey.Position
    else if aFieldName = FLD_DELTA then
      Result := FEvent.GetValue(0)
    else if aFieldName = FLD_ATTRIBUTE1 then
      Result := FEvent.Attribute1.AsVariant
    else if aFieldName = FLD_ATTRIBUTE2 then
  