anchor.diff:          begin
             r := m.registerGroups[j].registers[k];
             // Check if entry exceeds stated size (e.g. USERROW module which states size=32 but entries run to 63)
  -          if r.offset >= length(RegGroupArray)-1 then
  -            SetLength(RegGroupArray, r.offset+1);
  +          if (r.offset + r.size) > length(RegGroupArray) then
  +            SetLength(RegGroupArray, r.offset + r.size);
   
             if r.caption = '' then
               comment := ''
  
positive.code:         List.Add('Error unexpected class type: '+m.registerGroups[j].class_);
      end;
    end;
  
    sortedRegGroupsX(device, List);
  end;
  
negative.code:               List.Add('################ Error unexpected register byte size...');
            end;
          end;
  
          // Scan from bottom up, only add registers after first real register from bottom
          foundBottomReg := false;
          for k := high(RegGroupArray) downto 0 do
          begin
            if (RegGroupArray[k] = '') then
            begin
              if foundBottomReg then
               reverseList.Add('    Reserved'+IntToStr(k)+': byte;')
            end
            else if RegGroupArray[k] <> '_' then
            begin
              reverseList.Add(RegGroupArray[k]);
              foundBottomReg := true;
            end;
          end;
  
          // Flip order of registers
          for k := reverseList.Count-1 downto 0 do
            List.Add(reverseList[k]);
  
          reverseList.Clear;
          List.Add('  end;');
          List.Add('');
        end  // if
  