diff --git a/src/processor/processor_compass.cpp b/src/processor/processor_compass.cpp
index 7abc25ff089774bc670a163dd41993566f0b3f2f..972c26c572e51296a556f8c48c6daee941770bd8 100644
--- a/src/processor/processor_compass.cpp
+++ b/src/processor/processor_compass.cpp
@@ -28,7 +28,8 @@ void ProcessorCompass::processCapture(CaptureBasePtr _capture)
     }
     // Otherwise: store capture
     // Note that more than one processor can be emplacing frames, so an older frame can arrive later than this one.
-    buffer_capture_.add(_capture->getTimeStamp(), _capture);
+    else
+        buffer_capture_.add(_capture->getTimeStamp(), _capture);
 }
 
 void ProcessorCompass::processKeyFrame(FrameBasePtr _frame, const double& _time_tolerance)
diff --git a/test/gtest_factor_compass_3d.cpp b/test/gtest_factor_compass_3d.cpp
index 362e8b0748dfe724e6747377d19833a71c5c37cd..f438aa03fbc5c18ed3d6f0d87c26ed568c535a6d 100644
--- a/test/gtest_factor_compass_3d.cpp
+++ b/test/gtest_factor_compass_3d.cpp
@@ -44,9 +44,9 @@ void generateRandomSetup()
 
     // Random states
     frm_p = Vector3d::Random() * 10;
-    frm_q = Quaterniond(Vector4d::Random().normalized());
+    frm_q = Quaterniond::UnitRandom();
     sen_p = Vector3d::Random() * 10;
-    sen_q = Quaterniond(Vector4d::Random().normalized());
+    sen_q = Quaterniond::UnitRandom();
     sen_bias = Vector3d::Random();
     field = Vector3d::Random().normalized() * 50;