diff --git a/doc/params.txt b/doc/params.txt
index 869e500..17c46d0 100644
--- a/doc/params.txt
+++ b/doc/params.txt
@@ -99,7 +99,8 @@ block that can have an independent QP.
 
 * ref=X. Default to 1.
 
-Number of frames kept as reference (0..16).
+Number of frames kept as reference (0..8). A value of 0 implies intra coding
+will solely be used.
 
 
 * bframes=X. Default to 0.
diff --git a/f265/bdi.c b/f265/bdi.c
index e20cc09..94efb06 100644
--- a/f265/bdi.c
+++ b/f265/bdi.c
@@ -245,8 +245,8 @@ void f265_normalize_params(f265_enc_params *p)
     CL(p->tb_depth[0], 0, max_tb_depth);
     CL(p->tb_depth[1], 0, max_tb_depth);
     CL(p->qg_log, -1, 6);
-    CL(p->nb_refs, 0, 16);
-    CL(p->nb_b_frames, 0, 16);
+    CL(p->nb_refs, 0, 8);
+    CL(p->nb_b_frames, 0, F265_MAX(p->nb_refs - 1, 0));
     CL(p->nb_b_refs, 0, F265_MAX(F265_MIN(p->nb_refs, p->nb_b_frames) - 2, 0));
     CL(p->chroma_qp_idx_off, -12, 12);
     for (int i = 0; i < 2; i++)
