diff -urp numactl-0.9.6/libnuma.c numactl/libnuma.c
--- numactl-0.9.6/libnuma.c	2006-05-23 23:20:56.000000000 +0200
+++ numactl/libnuma.c	2006-03-28 00:17:05.000000000 +0200
@@ -493,16 +493,12 @@ int numa_node_to_cpus(int node, unsigned
 
 		/* if mask[0] is full shift left before adding another */
 		if (bits_in_mask_0 >= sizeof(mask[0])*8) {
-		        /* skip any leading zeros */
-		        if (prev || mask[0]){
-			        /* shift over any previously loaded masks */
-			        memmove(mask+mask_words+1, mask+mask_words,
-					sizeof(mask[0]) * mask_words);
-				mask_words++;
-				bits_in_mask_0 = 0;
-				mask[0] = 0;
-				prev = 1;
-			}
+			/* shift over any previously loaded masks */
+			mask_words++;
+			for (n = mask_words; n > 0; n--)
+				memmove(mask+n, mask+n-1, sizeof(mask[0]));
+			bits_in_mask_0 = 0;
+			mask[0] = 0;
 		}
  
 		mask[0] = (mask[0]*16) + (w - hexdigits);
