diff --git a/src/lua_taglib.c b/src/lua_taglib.c
index 7994b6625da5f3994d087885541191f799a85b36..cfaf8487236daba5a31a3e867568b8a596b23dbf 100644
--- a/src/lua_taglib.c
+++ b/src/lua_taglib.c
@@ -75,6 +75,8 @@ struct element_iterator_state {
 static int element_iterator(lua_State *L)
 {
 	struct element_iterator_state * state = lua_touserdata(L, 1);
+	if (lua_isnoneornil(L, 3))
+		state->p = 0;
 	lua_pushnumber(L, ++state->p);
 	lua_gettable(L, 1);
 	return 1;