diff --git a/src/xpath.c b/src/xpath.c
index 135e2e2..6b3ea51 100644
--- a/src/xpath.c
+++ b/src/xpath.c
@@ -7822,7 +7822,7 @@
 {
     LY_ERR rc = LY_SUCCESS, r;
     const char *ncname, *ncname_dict = NULL;
-    uint16_t ncname_len;
+    uint32_t i, ncname_len;
     const struct lys_module *moveto_mod = NULL;
     const struct lysc_node *scnode = NULL;
     struct ly_path_predicate *predicates = NULL;
@@ -7857,7 +7857,7 @@
     if (((set->format == LY_VALUE_JSON) || moveto_mod) && (axis == LYXP_AXIS_CHILD) && !all_desc &&
             (set->type == LYXP_SET_NODE_SET)) {
         /* find the matching schema node in some parent in the context */
-        for (uint32_t i = 0; i < set->used; ++i) {
+        for (i = 0; i < set->used; ++i) {
             if (eval_name_test_with_predicate_get_scnode(set->ctx, set->val.nodes[i].node, ncname, ncname_len,
                     moveto_mod, set->root_type, set->format, &scnode)) {
                 /* check failed */
@@ -7897,8 +7897,8 @@
         }
     } else {
         if (!(options & LYXP_SKIP_EXPR) && (options & LYXP_SCNODE_ALL)) {
-            int64_t i;
             const struct lyxp_set_scnode *scparent = NULL;
+            ly_bool found = 0;
 
             /* remember parent if there is only one, to print in the warning */
             for (i = 0; i < set->used; ++i) {
@@ -7927,12 +7927,15 @@
             }
             LY_CHECK_GOTO(rc, cleanup);
 
-            for (i = set->used - 1; i > -1; --i) {
+            i = set->used;
+            do {
+                --i;
                 if (set->val.scnodes[i].in_ctx > LYXP_SET_SCNODE_ATOM_NODE) {
+                    found = 1;
                     break;
                 }
-            }
-            if (i == -1) {
+            } while (i);
+            if (!found) {
                 /* generate message */
                 eval_name_test_scnode_no_match_msg(set, scparent, ncname, ncname_len, exp->expr, options);
 
