diff --git a/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh b/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh
index 5f9227be9ea6bc7e819c9abc8b86fc94dcc1af88..a8689cf34fa39b56d96ee4a5b95b260aa2eb824d 100644
--- a/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh
+++ b/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh
@@ -398,7 +398,7 @@ struct vector_dist_op_compute_op<prp,false,comp_host>
 template<unsigned int prp, unsigned int dim ,typename vector, typename expr>
 __global__ void compute_expr_ker_vv(vector vd, expr v_exp)
 {
-	int p = threadIdx.x + blockIdx.x * blockDim.x;
+	unsigned int p = threadIdx.x + blockIdx.x * blockDim.x;
 
 	if (p >= vd.size())	{return;}
 
@@ -411,7 +411,7 @@ __global__ void compute_expr_ker_vv(vector vd, expr v_exp)
 template<unsigned int prp, typename vector, typename expr>
 __global__ void compute_expr_ker_v(vector vd, expr v_exp)
 {
-	int p = threadIdx.x + blockIdx.x * blockDim.x;
+	unsigned int p = threadIdx.x + blockIdx.x * blockDim.x;
 
 	if (p >= vd.size())	{return;}
 
@@ -421,7 +421,7 @@ __global__ void compute_expr_ker_v(vector vd, expr v_exp)
 template<unsigned int prp, typename vector, typename expr>
 __global__ void compute_expr_ker(vector vd, expr v_exp)
 {
-	int p = threadIdx.x + blockIdx.x * blockDim.x;
+	unsigned int p = threadIdx.x + blockIdx.x * blockDim.x;
 
 	if (p >= vd.size_local())	{return;}
 
@@ -433,7 +433,7 @@ __global__ void compute_expr_ker_slice(vector vd, expr v_exp, Point<n,int> comp)
 {
 	typedef typename std::remove_const<typename std::remove_reference<decltype(pos_or_propL<vector,prp>::value_type(std::declval<vector>(),vect_dist_key_dx(0)))>::type>::type property_act;
 
-	int p = threadIdx.x + blockIdx.x * blockDim.x;
+	unsigned int p = threadIdx.x + blockIdx.x * blockDim.x;
 
 	if (p >= vd.size_local())	{return;}
 
@@ -443,7 +443,7 @@ __global__ void compute_expr_ker_slice(vector vd, expr v_exp, Point<n,int> comp)
 template<unsigned int prp, typename vector>
 __global__ void compute_double_ker(vector vd, double d)
 {
-	int p = threadIdx.x + blockIdx.x * blockDim.x;
+	unsigned int p = threadIdx.x + blockIdx.x * blockDim.x;
 
 	if (p >= vd.size_local())	{return;}
 
@@ -455,7 +455,7 @@ __global__ void compute_double_ker(vector vd, double d)
 template<unsigned int prp, unsigned int dim ,typename vector, typename NN_type, typename expr>
 __global__ void compute_expr_ker_sort_vv(vector vd, NN_type NN, expr v_exp)
 {
-	int p;
+	unsigned int p;
 
     GET_PARTICLE_SORT(p,NN);
 
@@ -468,7 +468,7 @@ __global__ void compute_expr_ker_sort_vv(vector vd, NN_type NN, expr v_exp)
 template<unsigned int prp, typename vector, typename NN_type, typename expr>
 __global__ void compute_expr_ker_sort_v(vector vd, NN_type NN, expr v_exp)
 {
-	int p;
+	unsigned int p;
 
     GET_PARTICLE_SORT(p,NN);
 
@@ -478,7 +478,7 @@ __global__ void compute_expr_ker_sort_v(vector vd, NN_type NN, expr v_exp)
 template<unsigned int prp, typename vector, typename expr, typename NN_type>
 __global__ void compute_expr_ker_sort(vector vd, NN_type NN, expr v_exp)
 {
-	int p;
+	unsigned int p;
 
     GET_PARTICLE_SORT(p,NN);
 
diff --git a/src/Operators/Vector/vector_dist_operators.hpp b/src/Operators/Vector/vector_dist_operators.hpp
index 7823d2c4f9f714b53d9332f485260ba04262e71e..f135c8023bf71a9fced436ad72385a17e1c8e2f8 100644
--- a/src/Operators/Vector/vector_dist_operators.hpp
+++ b/src/Operators/Vector/vector_dist_operators.hpp
@@ -980,7 +980,19 @@ public:
 	 * \return the result of the expression
 	 *
 	 */
-	__device__ inline auto value(const unsigned int & k) const -> decltype(pos_or_propR<vector,prp>::value(v.v,k))
+	__device__ __host__ inline auto value(const unsigned int & k) const -> decltype(pos_or_propR<vector,prp>::value(v.v,k))
+	{
+		return pos_or_propR<vector,prp>::value(v.v,k);
+	}
+
+	/*! \brief Evaluate the expression
+	 *
+	 * \param k where to evaluate the expression
+	 *
+	 * \return the result of the expression
+	 *
+	 */
+	__device__ __host__ inline auto value(const unsigned int & k) -> decltype(pos_or_propR<vector,prp>::value(v.v,k))
 	{
 		return pos_or_propR<vector,prp>::value(v.v,k);
 	}