anchor.diff:  //-- BG ---------------------------------------------------------- 26.09.2012 --
   function TBuffConvUTF8.NextChar: TBuffChar;
   const
  -  MaxChar: LongWord = 65535;
  +  MaxChar: LongWord = 65535; // "Not A Character"
   var
     Buffer: LongWord;
  +  Chr, Cnt: Word;
   
     function NextByte: Boolean;
  -  var
  -    Chr: Word;
     begin
       Chr := GetNext;
  +    Inc(Cnt);
       Result := (Chr and $C0) = $80;
       Buffer := (Buffer shl 6) + (Chr and $3F);
  +  end;
  +
  +  procedure Failed;
  +  begin
  +    if Chr = 0 then
  +      Buffer := 0
  +    else
  +      Buffer := MaxChar;
  +    Dec(FPos.BytePtr, Cnt);
     end;
   
   begin
  
positive.code:     $FC..$FD: // 6 bytes, 31 bits
      begin
        Buffer := Buffer and $01;
        if not (NextByte and NextByte and NextByte and NextByte and NextByte) then
          Buffer := 0 // invalid
        else if Buffer > MaxChar then
          Buffer := MaxChar;
      end;
  
negative.code:     $F8..$FB: // 5 bytes, 26 bits
      begin
        Buffer := Buffer and $03;
        Cnt := 0;
        if not (NextByte and NextByte and NextByte and NextByte) then
          Failed // invalid
        else if Buffer > MaxChar then
          Buffer := MaxChar;
      end;
  