anchor.diff:    else if aFieldName = FLD_ATTRIBUTE4 then
       Result := FEvent.Attribute4.AsVariant
     else if aFieldName = FLD_UPRIGHT then
  -    Result := FUpright
  +    Result := GetUpright(0)
     else if aFieldName = FLD_HIGHLIGHT then
       Result := TmUprightHighlightTypeToVariant(FHighlight)
     else if aFieldName = FLD_REMAINING then
  
positive.code:     Result := 1;
  end;
  
  function TmUprightDatum.GetDatumKey: IVDDatumKey;
  begin
    Result := FKey;
  end;
  
  function TmUprightDatum.GetPropertyByFieldName(const aFieldName: String): Variant;
  begin
    if aFieldName = FLD_POSITION then
      Result := FKey.Position
    else if aFieldName = FLD_DELTA then
      Result := FEvent.Value
    else if aFieldName = FLD_ATTRIBUTE1 then
      Result := FEvent.Attribute1.AsVariant
    else if aFieldName = FLD_ATTRIBUTE2 then
  
negative.code:   Result := Self;
  end;
  
  class procedure TmUprightDatum.FillVirtualFieldDefs(aFieldDefs: TmVirtualFieldDefs; aPrefix: String; const aValuesCount : integer = 1);
  var
    i : integer;
  begin
    with aFieldDefs.AddFieldDef do
    begin
  