Я писал данные в массив и на ходу считал его сумму. Она считалась неправильно. По прикидкам переполнения быть не могло, но оно было.

Оказалось, что я считал не совсем ту сумму:

array[x]=value;
x++;
sum+=array[x];

То есть я складывал мусор из области, в которую ещё не писал!