anchor.diff:        tmpValue := FDataProvider.GetDatum(i).GetPropertyByFieldName(FHorizontalGroupByDefs.Get(k).FieldName);
         tmpKeyValue := GetIndexKeyValue(tmpValue, FHorizontalGroupByDefs.Get(k));
         FHorizontalValues.Get(k).AddValueIfMissing(tmpKeyValue);
  -      currentCoord := currentCoord + tmpKeyValue + KEY_SEPARATOR;
  +      currentCoord := BuildKey(currentCoord, tmpKeyValue);
         if k < (FHorizontalGroupByDefs.Count - 1) then
           tmpIndex := tmpIndex.GetSubIndex(tmpKeyValue)
         else
  
positive.code:     // 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;
      class function BuildKey(const aOldKey, aNewKeyPartValue : String) : String;
      class function StringListToKey(const aKeys : TStringList): String;
  
  
negative.code:       tmpKeyValue := GetIndexKeyValue(tmpValue, FVerticalGroupByDefs.Get(k));
        FVerticalValues.Get(k).AddValueIfMissing(tmpKeyValue);
  
        currentCoord := BuildKey(currentCoord, tmpKeyValue);
        if k < (FVerticalGroupByDefs.Count - 1) then
          tmpIndex := tmpIndex.GetSubIndex(tmpKeyValue)
        else
  