anchor.diff:        if (MessageType = Ord(MQTT.PUBLISH)) then
           begin
             // Read the Length Bytes
  -          DataLen := BytesToStrLength(Copy(FCurrentData.Data, 0, 2));
  +          DataLen := BytesToStrLength(Copy(CurrentMessage.Data, 0, 2));
             // Get the Topic
  -          SetString(Topic, PChar(@FCurrentData.Data[2]), DataLen);
  +          SetString(Topic, PChar(@CurrentMessage.Data[2]), DataLen);
             // Get the Payload
  -          SetString(Payload, PChar(@FCurrentData.Data[2 + DataLen]), (Length(FCurrentData.Data) - 2 - DataLen));
  +          SetString(Payload, PChar(@CurrentMessage.Data[2 + DataLen]), (Length(CurrentMessage.Data) - 2 - DataLen));
             if Assigned(OnPublish) then OnPublish(Self, Topic, Payload);
           end
         else
         if (MessageType = Ord(MQTT.SUBACK)) then
           begin
             // Reading the Message ID
  -          ResponseVH := Copy(FCurrentData.Data, 0, 2);
  +          ResponseVH := Copy(CurrentMessage.Data, 0, 2);
             DataLen := BytesToStrLength(ResponseVH);
             // Next Read the Granted QoS
             QoS := 0;
  -          if (Length(FCurrentData.Data) - 2) > 0 then
  +          if (Length(CurrentMessage.Data) - 2) > 0 then
               begin
  -              ResponseVH := Copy(FCurrentData.Data, 2, 1);
  +              ResponseVH := Copy(CurrentMessage.Data, 2, 1);
                 QoS := ResponseVH[0];
               end;
             if Assigned(OnSubAck) then OnSubAck(Self, DataLen, QoS);
  
positive.code:                     writeln ('Error: 2:');
                      rxState := 3;
                  end;
                  FCurrentData := CurrentMessage;
                  Synchronize(@HandleData);
                  rxState := 0;
              end;
  
negative.code: 
  procedure TMQTTReadThread.Execute;
  var
    rxState: integer;
    remainingLength: integer;
    digit: integer;
  