diff --git a/src/multibody/joint/joint-free-flyer.hpp b/src/multibody/joint/joint-free-flyer.hpp
index 2476462b86817ba41e211882cff5f7a614e07544..01e493cb3daff2973fc876851b338d7a5d418fe2 100644
--- a/src/multibody/joint/joint-free-flyer.hpp
+++ b/src/multibody/joint/joint-free-flyer.hpp
@@ -339,8 +339,8 @@ namespace se3
 
     TangentVector_t difference_impl(const Eigen::VectorXd & q0, const Eigen::VectorXd & q1) const
     {
-      Transformation_t M0(Transformation_t::Identity()); forwardKinematics(M0, q0);
-      Transformation_t M1(Transformation_t::Identity()); forwardKinematics(M1, q1);
+      Transformation_t M0(Transformation_t::Identity()); forwardKinematics(M0, q0.segment<NQ> (idx_q ()));
+      Transformation_t M1(Transformation_t::Identity()); forwardKinematics(M1, q1.segment<NQ> (idx_q ()));
 
       return se3::log6(M0.inverse()*M1);
     } 
diff --git a/src/multibody/joint/joint-spherical.hpp b/src/multibody/joint/joint-spherical.hpp
index 8773e695de7570281f213a8e47539f3eb8d895dd..59bd5f65b34d2a47a0b961a96ef382697d42e5f2 100644
--- a/src/multibody/joint/joint-spherical.hpp
+++ b/src/multibody/joint/joint-spherical.hpp
@@ -386,8 +386,8 @@ namespace se3
 
     TangentVector_t difference_impl(const Eigen::VectorXd & q0,const Eigen::VectorXd & q1) const
     {
-      Transformation_t M0; forwardKinematics(M0, q0);
-      Transformation_t M1; forwardKinematics(M1, q1);
+      Transformation_t M0; forwardKinematics(M0, q0.segment<NQ>(idx_q()));
+      Transformation_t M1; forwardKinematics(M1, q1.segment<NQ>(idx_q()));
 
       return se3::log3((M0.rotation().transpose()*M1.rotation()).eval());