diff --git a/.hgignore b/.hgignore
index 87780b0..379bbac 100644
--- a/.hgignore
+++ b/.hgignore
@@ -52,7 +52,6 @@
 ^regress/rename$
 ^regress/runtest$
 ^regress/set_comment_all$
-^regress/set_comment_removeglobal$
 ^regress/set_comment_revert$
 ^regress/set_compression$
 ^regress/stat_index$
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index c0d3a65..4bbc622 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -14,7 +14,6 @@
 #  fread
   name_locate
   set_comment_all
-  set_comment_removeglobal
   set_comment_revert
 )
 
diff --git a/regress/Makefile.am b/regress/Makefile.am
index d4274f5..e6d45be 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -11,7 +11,6 @@
 	modify \
 	name_locate \
 	set_comment_all \
-	set_comment_removeglobal \
 	set_comment_revert \
 	set_compression \
 	tryopen
diff --git a/regress/modify.c b/regress/modify.c
index e6f31cd..dc426ce 100644
--- a/regress/modify.c
+++ b/regress/modify.c
@@ -409,6 +409,15 @@
 }
 
 static int
+set_archive_comment(int argc, char *argv[]) {
+    if (zip_set_archive_comment(za, argv[0], (zip_uint16_t)strlen(argv[0])) < 0) {
+	fprintf(stderr, "can't set archive comment to `%s': %s\n", argv[0], zip_strerror(za));
+	return -1;
+    }
+    return 0;
+}
+
+static int
 set_file_comment(int argc, char *argv[]) {
     zip_uint64_t idx;
     idx = strtoull(argv[0], NULL, 10);
@@ -772,6 +781,7 @@
     { "get_file_comment", 1, "index", "get file comment", get_file_comment },
     { "rename", 2, "index name", "rename entry", zrename },
     { "replace_file_contents", 2, "index data", "replace entry with data", replace_file_contents },
+    { "set_archive_comment", 1, "comment", "set archive comment", set_archive_comment },
     { "set_extra", 5, "index extra_id extra_index flags value", "set extra field", set_extra },
     { "set_file_comment", 2, "index comment", "set file comment", set_file_comment },
     { "set_file_compression", 3, "index method flags", "set file compression method", set_file_compression },
diff --git a/regress/set_comment_removeglobal.c b/regress/set_comment_removeglobal.c
deleted file mode 100644
index aa18f0f..0000000
--- a/regress/set_comment_removeglobal.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  set_comment_removeglobal.c -- remove archive comment
-  Copyright (C) 2006-2014 Dieter Baron and Thomas Klausner
-
-  This file is part of libzip, a library to manipulate ZIP archives.
-  The authors can be contacted at <libzip@nih.at>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-  3. The names of the authors may not be used to endorse or promote
-     products derived from this software without specific prior
-     written permission.
- 
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "zipint.h"
-
-const char *prg;
-
-int
-main(int argc, char *argv[])
-{
-    const char *archive;
-    zip_t *za;
-    int err;
-
-    prg = argv[0];
-
-    if (argc != 2) {
-	fprintf(stderr, "usage: %s archive\n", prg);
-	return 1;
-    }
-
-    archive = argv[1];
-    
-    if ((za=zip_open(archive, 0, &err)) == NULL) {
-	zip_error_t error;
-	zip_error_init_with_code(&error, err);
-	fprintf(stderr, "%s: can't open zip archive '%s': %s\n", prg, archive, zip_error_strerror(&error));
-	zip_error_fini(&error);
-	return 1;
-    }
-
-    if (zip_set_archive_comment(za, NULL, 0) < 0) {
-	fprintf(stderr, "%s: zip_set_archive_comment failed: %s\n", prg, zip_strerror(za));
-    }
-
-    if (zip_close(za) == -1) {
-	fprintf(stderr, "%s: can't close zip archive '%s': %s\n", prg, archive, zip_strerror(za));
-	return 1;
-    }
-
-    return 0;
-}
diff --git a/regress/set_comment_removeglobal.test b/regress/set_comment_removeglobal.test
index b2defe3..f00cf8a 100644
--- a/regress/set_comment_removeglobal.test
+++ b/regress/set_comment_removeglobal.test
@@ -1,5 +1,5 @@
 # remove archive comment
-program set_comment_removeglobal
+program modify
 return 0
-args testcomment.zip
+args testcomment.zip  set_archive_comment ""
 file testcomment.zip testcomment.zip testcommentremoved.zip
