diff --git a/cv-node/src/rtcensus.cpp b/cv-node/src/rtcensus.cpp
index 4135ba3ef887c83a1d131a063b801ab34eec9561..61f3df1996e2b649e82bc6964882c5c35770bda7 100644
--- a/cv-node/src/rtcensus.cpp
+++ b/cv-node/src/rtcensus.cpp
@@ -54,25 +54,29 @@ static vector<uint16_t> dsi_ca(vector<uint64_t> &census_R, vector<uint64_t> &cen
 	auto ds = d_stop - d_start;
 	vector<uint16_t> result(census_R.size()*ds, 0);
 
-	for (size_t d=0; d<ds; d++) {
-		const auto d_ = d * sign;
+
+
 		for (size_t v=2; v<h-2; v++) {
 		for (size_t u=2; u<w-2; u++) {
-			const size_t ix = d+v*w*ds+u*ds;
+			const size_t ix = v*w*ds+u*ds;
 			for (int n=-2; n<=2; n++) {
 			const auto u_ = u + n;
-			if (u_+d_ < 0 || u_+d_ >= w) continue;
+	
 			for (int m=-2; m<=2; m++) {
+			
+				for (size_t d=0; d<ds; d++) {
+				const auto d_ = d * sign;
+				if (u_+d_ < 0 || u_+d_ >= w) continue;
 				const auto v_ = (v + m)*w;
 				auto r = census_R[u_+v_];
 				auto l = census_L[v_+(u_+d_)];
-				result[ix] += bitset<64>(r^l).count(); //hamming(r,l);
-			}
+				result[ix+d] += bitset<64>(r^l).count(); //hamming(r,l);
+				}
 			}
 			
+			}
 		}
 		}
-	}
 
 	return result;
 }