int calculation( long long int *f, long long int *a, int n )
{
    int i = 1;
    int j;

    a[1] = f[1];

    while( i < 10 ){
        for( j = 2; j <= n; j++ ){
            a[j] = f[j] - a[j-1] * i;
        }
        if( -1 < a[n] && a[n] < 1 ){
            break;
        }
        else{
            i*= -1;
            if( 0 < i ){
                i++;
            }
        }
    }
    return i;
}

組み立て除法で割り切れる数値を探すプログラムなのですが、
if( -1 < a[n] && a[n] < 1 )
の判定が上手く出来ません。
勿論
if( a[n] == 0 )
も検証してみました。
判定の直前で a[n] の値を出力すると0と出てくるので原因が分かりません。
どなたか助けてください。