anchor.diff:    FHorizontalValues := TKeyValuesForGroupByDefs.Create;
     FRecordCoordinates := TmStringDictionary.Create(true);
     FValues := TmStringDictionary.Create(true);
  -  FVerticalKeysIndex := TmKeysIndex.Create;
  -  FHorizontalKeysIndex := TmKeysIndex.Create;
  +  FHorizontalGrandTotals := TmStringDictionary.Create(true);
  +  FVerticalGrandTotals := TmStringDictionary.Create(true);
  +  FVerticalKeysIndex := TmKeysIndex.Create(0);
  +  FHorizontalKeysIndex := TmKeysIndex.Create(0);
     FSummaryDefinitions := TmSummaryDefinitions.Create;
   end;
   
  
positive.code:   FFormula.Assign(aSource.Formula);
    FDisplayLabel.Assign(aSource.DisplayLabel);
    FDisplayFormat.Assign(aSource.DisplayFormat);
  end;
  
  class function TmGroupByDef.CheckOperationKindCompatibility(const aOperationKind: TmGroupByOperationKind; const aDataType: TFieldType): boolean;
  
negative.code:   for i:= 0 to FDataProvider.Count -1 do
    begin
      currentCoord := '';
      currentVertCoord:= '';
      tmpActualValue:= Null;
      tmpIndex := FVerticalKeysIndex;
      parentKeyValue := EMPTY_STRING_VALUE;
      for k := 0 to FVerticalGroupByDefs.Count -1 do
  