diff --git a/README.md b/README.md
index 4b1798be3d4484cf7024f8741231271e21cfbd0b..4ebb2e743d23d2a362ad75b298afdf85e4a1a3af 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ the messages according to OpenDLV Standard Message Set into session 111 in
 Google Protobuf format, simply start it as follows:
 
 ```
-docker run --init --rm --net=host chalmersrevere/opendlv-device-gps-nmea-multi:v0.0.11 --nmea_ip=10.42.42.23 --nmea_port=9999 --cid=111 --verbose
+docker run --init --rm --net=host chalmersrevere/opendlv-device-gps-nmea-multi:v0.0.12 --nmea_ip=10.42.42.23 --nmea_port=9999 --cid=111 --verbose
 ```
 
 ## Build from sources on the example of Ubuntu 16.04 LTS
diff --git a/src/nmea-decoder.cpp b/src/nmea-decoder.cpp
index 4b5afb3146c10934a5815a047a9e875682491538..43fb352c9a012e16ba99b14f6bfd93604d77fe2a 100644
--- a/src/nmea-decoder.cpp
+++ b/src/nmea-decoder.cpp
@@ -52,7 +52,7 @@ void NMEADecoder::decode(const std::string &data, std::chrono::system_clock::tim
       // Consume data from m_buffer.
       size_t consumed = parseBuffer(m_buffer, m_size, std::move(tp));
       // Discard processed entries.
-      for (size_t i{0}; i < (m_size - consumed); i++) {
+      for (size_t i{0}; (0 < consumed) && (i < (m_size - consumed)); i++) {
           m_buffer[i] = m_buffer[i + consumed];
       }
       m_size -= consumed;
@@ -81,7 +81,7 @@ size_t NMEADecoder::parseBuffer(const uint8_t *buffer, const size_t size, std::c
     while (true) {
         // Sanity check whether we consumed all data.
         if ((offset + NMEADecoderConstants::HEADER_SIZE) > size) {
-            return size;
+            return offset;
         }
 
         if ( ('G' == buffer[offset + 3]) &&