diff --git a/src/box/box_lua.cc b/src/box/box_lua.cc
index 9606f1919514829c7660adb3b3c550f990dee411..9bc7b989d9736efb0c96fb9b967d6496888481f0 100644
--- a/src/box/box_lua.cc
+++ b/src/box/box_lua.cc
@@ -314,7 +314,9 @@ lbox_tuple_transform(struct lua_State *L)
 	/*
 	 * Calculate the number of operations and length of UPDATE expression
 	 */
-	uint32_t op_cnt = offset < tuple->field_count ? field_count : 0;
+	uint32_t op_cnt = 0;
+	if (offset < tuple->field_count && field_count > 0)
+		op_cnt++;
 	if (argc > 3)
 		op_cnt += argc - 3;
 
@@ -331,10 +333,13 @@ lbox_tuple_transform(struct lua_State *L)
 	luaL_buffinit(L, &b);
 	luaL_addlstring(&b, (char *) &op_cnt, sizeof(op_cnt));
 	uint32_t offset_u32 = (uint32_t) offset;
-	for (uint32_t i = 0; i < (uint32_t) field_count; i++) {
+	uint32_t field_count_u32 = (uint32_t) field_count;
+	if (field_count > 0) {
 		luaL_addlstring(&b, (char *) &offset_u32, sizeof(offset_u32));
-		luaL_addchar(&b, UPDATE_OP_DELETE_1_4);
-		luaL_addvarint32(&b, 0); /* Unused. */
+		luaL_addchar(&b, UPDATE_OP_DELETE); /* multi-delete */
+		luaL_addvarint32(&b, sizeof(field_count_u32));
+		luaL_addlstring(&b, (char *) &field_count_u32,
+				sizeof(field_count_u32));
 	}
 
 	for (int i = argc ; i > 3; i--) {
diff --git a/test/big/lua.result b/test/big/lua.result
index e10bb33fa784b591572a8ff333051615d6561a44..37f969d0edf5744756753b61102ec18ff052ea41 100644
--- a/test/big/lua.result
+++ b/test/big/lua.result
@@ -480,6 +480,22 @@ lua t:transform(0, 1, {})
 ---
 error: 'tuple.transform(): unsupported field type ''table'''
 ...
+lua n = 50000;
+---
+...
+lua tab = {}; for i=1,n,1 do table.insert(tab, i) end
+---
+...
+lua t = box.tuple.new(tab)
+---
+...
+lua t:transform(0, n - 1)
+---
+ - 50000: {}
+...
+lua t = nil
+---
+...
 lua t=box.insert(12, 'A', '2', '3', '4', '3', '2', '5', '6', '3', '7')
 ---
 ...
diff --git a/test/big/lua.test b/test/big/lua.test
index 03a4bfc9835b1f2e3a13fe35d927a78514aa036b..a99d46a72e497651da371db246482996fe9dd254 100644
--- a/test/big/lua.test
+++ b/test/big/lua.test
@@ -175,6 +175,17 @@ exec admin "lua t:transform(0, 3, 1, 2, 3)"
 exec admin "lua t:transform(3, 1, tonumber64(4))"
 exec admin "lua t:transform(0, 1, {})"
 
+#
+# Tests for OPENTAR-64 - a limitation for the second argument to tuple:transform
+#
+
+# 50K is enough for everyone
+exec admin "lua n = 50000;"
+exec admin "lua tab = {}; for i=1,n,1 do table.insert(tab, i) end"
+exec admin "lua t = box.tuple.new(tab)"
+exec admin "lua t:transform(0, n - 1)"
+exec admin "lua t = nil"
+
 #
 # Tests for lua tuple:find() and tuple:findall()
 #