anchor.diff:            if sourceFieldsMap.Count = 0 then
             begin
               for q := 0 to sourceQuery.AsDataset.Fields.Count - 1 do
  +            begin
                 sourceFieldsMap.Add(Uppercase(sourceQuery.AsDataset.Fields[q].FieldName), sourceQuery.AsDataset.Fields[q]);
  +              {$IFDEF DEBUG}
  +              logger.Debug('Add source field ' + Uppercase(sourceQuery.AsDataset.Fields[q].FieldName) + ' to map...' );
  +              {$ENDIF}
  +            end;
             end;
   
             curKeyString:= '';
  
positive.code:           end;
          end;
  
          sourceFieldsMap.Clear;
          sourceQuery.Open;
          rows := 0;
          performedInserts := 0;
          performedUpdates := 0;
  
negative.code:             for q := 0 to aTable.FieldsMapping.Count - 1 do
              begin
                sourcefld := sourceFieldsMap.Find(aTable.FieldsMapping.Get(q).SourceField.AsUppercaseString) as TField;
                if not Assigned(sourcefld) then
                  raise Exception.Create('Source field missing! ' + aTable.FieldsMapping.Get(q).SourceField.AsUppercaseString + ' Source fields map count: ' + IntToStr(sourceFieldsMap.Count));
  
                destinationfld := destinationQuery.AsDataset.FieldByName(aTable.FieldsMapping.Get(q).DestinationField.AsString);
                performUpdate := MD5Print(MD5String(sourcefld.AsString)) <> MD5Print(MD5String(destinationfld.AsString));
                if performUpdate then
  