diff --git a/core/src/superpose.cc b/core/src/superpose.cc
index 51004902b8fa7c0d94c4b1620a1d066e908c2175..1d4fad622161e538c51eabf688360c73eb1381d6 100644
--- a/core/src/superpose.cc
+++ b/core/src/superpose.cc
@@ -25,6 +25,11 @@ void TheobaldRMSD(const promod3::core::EMatX3& pos_one,
                   Real& rmsd,
                   promod3::core::EMat3& rot){
 
+  if(pos_one.rows() < 3){
+    throw promod3::Error("Observed superposition with < 3 positions to "
+                         "superpose!");
+  }
+
   promod3::core::EMat3 M = pos_one.transpose() * pos_two;
 
   // for the calculations itself we enforce double precision
@@ -211,11 +216,6 @@ void Superpose(promod3::core::EMatX3& pos_one,
     throw promod3::Error("Cannot superpose positions of different size!");
   }
 
-  if(pos_one.rows() < 3){
-    throw promod3::Error("Observed superposition with < 3 positions to "
-                         "superpose!");
-  }
-
   avg_one = AverageRow(pos_one);
   avg_two = AverageRow(pos_two);