>>109-116

皆さんご助言ありがとうございます。おかげさまで一応不具合は解消できました。
以下問題の箇所です。

signed int MAX, WIDTH, TMP, SHIFT;
float COEF;

COEF = MAX / WIDTH; //浮動小数点演算になると思っていた
// 1 = 128 / 128

TMP = SHIFT * COEF;
// -128 = -128 * 1

if (TMP > 0)
{式1} //TMP= -128 なのに、式1が実行される。
else
{式2}

だったのを
COEF = ((float)MAX / WIDTH);
に修正すると、式2 も実行されるようになりました。他に変更したところはありません。
今まで何故(-128 > 0)が真だったのかは不明です...