diff --git a/src/processor_base.cpp b/src/processor_base.cpp
index a5c44e2abd7c5c2c96b14d10346744b4d186b3b6..9d92a285fdaf25d2f7d8f65124c85f09989b0c01 100644
--- a/src/processor_base.cpp
+++ b/src/processor_base.cpp
@@ -89,40 +89,39 @@ void KFPackBuffer::add(const FrameBasePtr& _key_frame, const Scalar& _time_toler
 
 KFPackPtr KFPackBuffer::selectPack(const TimeStamp& _time_stamp, const Scalar& _time_tolerance)
 {
-    KFPackBuffer::Iterator post = container_.upper_bound(_time_stamp);
-    KFPackBuffer::Iterator prev = container_.end();
-
     if (container_.empty())
         return nullptr;
 
-    bool check_post = (post != container_.end());
+    KFPackBuffer::Iterator post = container_.upper_bound(_time_stamp);
+
+    bool prev_exists = (post != container_.begin());
+    bool post_exists = (post != container_.end());
 
-    if (post != container_.begin())
+    bool post_ok = post_exists && checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance);
+
+    if (prev_exists)
     {
-        prev = std::prev(post);
-        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)))
+        KFPackBuffer::Iterator prev = std::prev(post);
+
+        bool prev_ok = checkTimeTolerance(prev->first, prev->second->time_tolerance, _time_stamp, _time_tolerance);
+
+        if (!prev_ok && post_ok)
             return post->second;
-        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)))
+
+        else if (prev_ok && !post_ok)
             return prev->second;
-        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)))
+
+        else if (prev_ok && post_ok)
         {
-            if (std::fabs((*post).first - _time_stamp) < std::fabs((*prev).first - _time_stamp))
+            if (std::fabs(post->first - _time_stamp) < std::fabs(prev->first - _time_stamp))
                 return post->second;
             else
                 return prev->second;
         }
     }
-    else
-    {
-        if (checkTimeTolerance(post->first, post->second->time_tolerance, _time_stamp, _time_tolerance))
-            return post->second;
-    }
+    else if (post_ok)
+        return post->second;
+
     return nullptr;
 }