diff --git a/src/processor_base.cpp b/src/processor_base.cpp
index 18701229dab299956def1c10bddfac5030ae0e3c..a7b02955e18b2e6c23d0be2d9968bdf4c00d3e4b 100644
--- a/src/processor_base.cpp
+++ b/src/processor_base.cpp
@@ -92,14 +92,25 @@ KFPackPtr KFPackBuffer::selectPack(const TimeStamp& _time_stamp, const Scalar& _
     KFPackBuffer::Iterator post = container_.upper_bound(_time_stamp);
     KFPackBuffer::Iterator prev = container_.end();
 
+    if (container_.empty())
+        return nullptr;
+
+    bool check_post = (post != container_.end());
+
     if (post != container_.begin())
     {
         prev = std::prev(post);
-        if (!checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance) && checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
+        if (!checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance)
+                && check_post
+                && checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
             return post->second;
-        else if (checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance) && !checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
+        else if (checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance)
+                && check_post
+                && !checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
             return prev->second;
-        else if (checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance) && checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
+        else if (checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance)
+                && check_post
+                && checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
         {
             if (std::fabs((*post).first - _time_stamp) < std::fabs((*prev).first - _time_stamp))
                 return post->second;
diff --git a/src/processor_tracker.cpp b/src/processor_tracker.cpp
index e1d6c240c5c9ab997721cd14318c8549806e07cf..2f1486dabea472230da45a86a09e7f355316fed0 100644
--- a/src/processor_tracker.cpp
+++ b/src/processor_tracker.cpp
@@ -52,11 +52,11 @@ void ProcessorTracker::process(CaptureBasePtr const _incoming_ptr)
         }
 
         // Select using incoming_ptr
-        pack = kf_pack_buffer_.selectPack( incoming_ptr_->getTimeStamp(), time_tolerance_ );
+        pack = kf_pack_buffer_.selectPack( _incoming_ptr->getTimeStamp(), time_tolerance_ );
         if (pack!=nullptr)
         {
             keyFrameCallback(pack->key_frame,pack->time_tolerance);
-            kf_pack_buffer_.removeUpTo( incoming_ptr_->getTimeStamp() );
+            kf_pack_buffer_.removeUpTo( _incoming_ptr->getTimeStamp() );
         }
     }