anchor.diff:      // internal or test functions
       function GetRecords (const aVerticalKeys, aHorizontalKeys : TStringList): TCardinalList; overload;
       function GetRecords (const aVerticalKeys, aHorizontalKeys : string): TCardinalList; overload;
  -//    function ComputeSummary (const aVerticalKeys, aHorizontalKeys : TStringList; const aSummaryDefinition : TmSummaryDefinition) : TmSummaryValue; overload;
  -//    function ComputeSummary (const aVerticalKeys, aHorizontalKeys : String; const aSummaryDefinition : TmSummaryDefinition) : TmSummaryValue;
  +    function GetValue(const aVerticalKeys, aHorizontalKeys : TStringList; const aSummaryDefinition: TmSummaryDefinition): TmSummaryValue; overload;
  +    function GetValue(const aVerticalKeys, aHorizontalKeys : string; const aSummaryDefinition: TmSummaryDefinition): TmSummaryValue; overload;
       class function BuildKey(const aOldKey, aNewKeyPartValue : String) : String;
       class function StringListToKey(const aKeys : TStringList): String;
   
  
positive.code:       tmpKeyValue := GetIndexKeyValue(tmpValue, FVerticalGroupByDefs.Get(k));
        FVerticalValues.Get(k).AddValueIfMissing(tmpKeyValue);
  
        currentCoord := currentCoord + tmpKeyValue + KEY_SEPARATOR;
        if k < (FVerticalGroupByDefs.Count - 1) then
          tmpIndex := tmpIndex.GetSubIndex(tmpKeyValue)
        else
  
negative.code:   Result := FRecordCoordinates.Find(aVerticalKeys + aHorizontalKeys) as TCardinalList;
  end;
  
  function TmPivoter.GetValue(const aVerticalKeys, aHorizontalKeys : TStringList; const aSummaryDefinition: TmSummaryDefinition): TmSummaryValue;
  var
    tmpHor, tmpVer : String;
  begin
    tmpHor := StringListToKey(aHorizontalKeys);
    tmpVer := StringListToKey(aVerticalKeys);
    Result := GetValue(tmpVer, tmpHor, aSummaryDefinition);
  end;
  
  function TmPivoter.GetValue(const aVerticalKeys, aHorizontalKeys: string; const aSummaryDefinition: TmSummaryDefinition): TmSummaryValue;
  var
    tmpValues : TmSummaryValues;
  begin
    Result := nil;
  
    tmpValues := FValues.Find(aVerticalKeys + aHorizontalKeys) as TmSummaryValues;
    if Assigned(tmpValues) then
      Result := tmpValues.FindByDefinition(aSummaryDefinition);
  end;
  
  class function TmPivoter.BuildKey(const aOldKey, aNewKeyPartValue: String): String;
  begin
  