     else if(c_sup <= 0)
     {
         /* interval c is negative */
-        if(b_inf <= 0)
+        if(b_inf >= 0)
         {
             /*interval b is positive*/
             *a_inf = b_sup*c_inf;
-            *a_sup = -b_inf*c_sup;
+            *a_sup = b_inf*c_sup;
         }
         else if(b_sup <= 0)
         {
             /* interval b is negative */
-            *a_inf = b_sup*-c_sup;
+            *a_inf = b_sup*c_sup;
             *a_sup = b_inf*c_inf;
         }
         else

        float_type tmp_sup1 = b_inf*c_inf;
        float_type tmp_inf2 = b_inf*c_sup;
        float_type tmp_sup2 = b_sup*c_sup;
        *a_inf = fmax(tmp_inf1, tmp_inf2);
        *a_sup = fmax(tmp_sup1, tmp_sup2);
    }
}


                                const float_type aux_coeff = aux_coeffs[filter_index];
                                elina_double_interval_mul_expr_coeff(&tmp1, &tmp2, prev_inf_coeff, prev_sup_coeff, -aux_coeff, aux_coeff);

                                maxRes = max(fabs(inf_coeff), fabs(sup_coeff));
                                maxMul = max(fabs(tmp1), fabs(tmp2));

                                inf_coeff = inf_coeff + tmp1 + (maxRes + maxMul)*ulp;
                                sup_coeff = sup_coeff + tmp2 + (maxRes + maxMul)*ulp;
