diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c
index 6380ce6..a591d88 100644
--- a/src/libFLAC/stream_encoder.c
+++ b/src/libFLAC/stream_encoder.c
@@ -3546,6 +3546,9 @@ FLAC__bool process_subframe_(
 								}
 								else {
 									min_qlp_coeff_precision = max_qlp_coeff_precision = encoder->protected_->qlp_coeff_precision;
+									/* try to keep qlp coeff precision such that only 32-bit math is required for decode of <=16bps streams */
+									if(subframe_bps <= 16)
+										min_qlp_coeff_precision = max_qlp_coeff_precision = flac_min(max_qlp_coeff_precision, 32 - subframe_bps - FLAC__bitmath_ilog2(lpc_order));
 								}
 								for(qlp_coeff_precision = min_qlp_coeff_precision; qlp_coeff_precision <= max_qlp_coeff_precision; qlp_coeff_precision++) {
 									_candidate_bits =
@@ -3779,13 +3782,6 @@ unsigned evaluate_lpc_subframe_(
 	int quantization, ret;
 	const unsigned residual_samples = blocksize - order;
 
-	/* try to keep qlp coeff precision such that only 32-bit math is required for decode of <=16bps streams */
-	if(subframe_bps <= 16) {
-		FLAC__ASSERT(order > 0);
-		FLAC__ASSERT(order <= FLAC__MAX_LPC_ORDER);
-		qlp_coeff_precision = flac_min(qlp_coeff_precision, 32 - subframe_bps - FLAC__bitmath_ilog2(order));
-	}
-
 	ret = FLAC__lpc_quantize_coefficients(lp_coeff, order, qlp_coeff_precision, qlp_coeff, &quantization);
 	if(ret != 0)
 		return 0; /* this is a hack to indicate to the caller that we can't do lp at this order on this subframe */
