bugfix
diff --git a/libebtc.c b/libebtc.c
index ee63175..c528352 100644
--- a/libebtc.c
+++ b/libebtc.c
@@ -590,17 +590,17 @@
 		ebt_print_error("The specified rule number is incorrect");
 		return;
 	}
-	/* We're adding one rule */
-	replace->nentries++;
-	entries->nentries++;
 	/* Go to the right position in the chain */
-	if (rule_nr == entries->nentries-1)
+	if (rule_nr == entries->nentries)
 		u_e = entries->entries;
 	else {
 		u_e = entries->entries->next;
 		for (i = 0; i < rule_nr; i++)
 			u_e = u_e->next;
 	}
+	/* We're adding one rule */
+	replace->nentries++;
+	entries->nentries++;
 	/* Insert the rule */
 	new_entry->next = u_e;
 	new_entry->prev = u_e->prev;
@@ -620,7 +620,7 @@
 		if (i == replace->num_chains)
 			cc = replace->cc;
 		else
-			cc = replace->chains[i]->entries->cc;
+			cc = replace->chains[i]->entries->next->cc;
 	} else
 		cc = new_entry->next->cc;
 	new_cc->next = cc;