diff --git a/src/cell.c b/src/cell.c
index 98923be..d066205 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -297,8 +297,12 @@ gnm_cell_set_array_formula (Sheet *sheet,
 	corner = sheet_cell_fetch (sheet, col_a, row_a);
 	g_return_if_fail (corner != NULL);
 
-	wrapper = gnm_expr_top_new_array_corner (num_cols, num_rows, gnm_expr_copy (texpr->expr));
-	gnm_expr_top_unref (texpr);
+	if (GNM_EXPR_GET_OPER (texpr->expr) == GNM_EXPR_OP_ARRAY_CORNER)
+		wrapper = texpr;
+	else {
+		wrapper = gnm_expr_top_new_array_corner (num_cols, num_rows, gnm_expr_copy (texpr->expr));
+		gnm_expr_top_unref (texpr);
+	}
 	cell_set_expr_internal (corner, wrapper);
 	gnm_expr_top_unref (wrapper);
 
