diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml
index c5e01b7134df44a227c6d801e2ab9e1e6f2c0da0..6ce13b9bca6b0e30e6afd22fc88a9f2901006c7f 100644
--- a/src/kernel_services/ast_queries/cil.ml
+++ b/src/kernel_services/ast_queries/cil.ml
@@ -7444,7 +7444,9 @@ let isCompleteType ?allowZeroSizeArrays t =
 	   let undolist = ref [] in
 	   (* Process one local variable *)
 	   let processLocal (v: varinfo) =
-             let lookupname = v.vname in
+             (* start from original name to avoid putting another _0 in case
+                of conflicts. *)
+             let lookupname = v.vorig_name in
              let data = CurrentLoc.get () in
 	     let newname, oldloc =
                Alpha.newAlphaName
diff --git a/tests/syntax/oracle/rename.res.oracle b/tests/syntax/oracle/rename.res.oracle
index 52e6869da0887ef55a31547b8483fa061a1024d4..a672348b232fd2f454a12b89f3cafdb68939911c 100644
--- a/tests/syntax/oracle/rename.res.oracle
+++ b/tests/syntax/oracle/rename.res.oracle
@@ -73,6 +73,23 @@ void f4(int *j_0_1)
   return;
 }
 
+void f5(void)
+{
+  int y_0_1;
+  int y_0_0;
+  return;
+}
+
+int y_0;
+void f6(void)
+{
+  int y_2_0;
+  int y_2;
+  return;
+}
+
+int y_1;
+
 struct not_anon s = {.__anonCompField1 = 0};
 struct anon a = {.__anonCompField1 = {.inner_i = 0}};