diff --git a/test/firework.c b/test/firework.c
index 6d35d50..54e4036 100644
--- a/test/firework.c
+++ b/test/firework.c
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.              *
+ * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: firework.c,v 1.30 2014/08/02 17:24:07 tom Exp $
+ * $Id: firework.c,v 1.40 2022/12/04 00:40:11 tom Exp $
  */
 #include <test.priv.h>
 
@@ -37,8 +38,7 @@
 static void
 cleanup(void)
 {
-    curs_set(1);
-    endwin();
+    stop_curses();
 }
 
 static void
@@ -137,17 +137,62 @@
     showit();
 }
 
-int
-main(
-	int argc GCC_UNUSED,
-	char *argv[]GCC_UNUSED)
+static void
+usage(int ok)
 {
-    int start, end, row, diff, flag = 0, direction;
+    static const char *msg[] =
+    {
+	"Usage: firework [options]"
+	,""
+	,USAGE_COMMON
+	,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+	," -d       invoke use_default_colors, repeat to use in init_pair"
+#endif
+    };
+    size_t n;
+
+    for (n = 0; n < SIZEOF(msg); n++)
+	fprintf(stderr, "%s\n", msg[n]);
+
+    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
+
+int
+main(int argc, char *argv[])
+{
+    int ch;
+    int start, end;
+    int row, diff;
+    int flag = 0;
+    int direction;
     unsigned seed;
+#if HAVE_USE_DEFAULT_COLORS
+    bool d_option = FALSE;
+#endif
 
-    CATCHALL(onsig);
+    while ((ch = getopt(argc, argv, OPTS_COMMON "d")) != -1) {
+	switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+	case 'd':
+	    d_option = TRUE;
+	    break;
+#endif
+	case OPTS_VERSION:
+	    show_version(argv);
+	    ExitProgram(EXIT_SUCCESS);
+	default:
+	    usage(ch == OPTS_USAGE);
+	    /* NOTREACHED */
+	}
+    }
+    if (optind < argc)
+	usage(FALSE);
 
-    initscr();
+    InitAndCatch(initscr(), onsig);
     noecho();
     cbreak();
     keypad(stdscr, TRUE);
@@ -156,7 +201,7 @@
     if (has_colors()) {
 	start_color();
 #if HAVE_USE_DEFAULT_COLORS
-	if (use_default_colors() == OK)
+	if (d_option && (use_default_colors() == OK))
 	    my_bg = -1;
 #endif
     }
@@ -174,7 +219,7 @@
 	    diff = abs(start - end);
 	} while (diff < 2 || diff >= LINES - 2);
 	(void) attrset(AttrArg(0, A_NORMAL));
-	for (row = 0; row < diff; row++) {
+	for (row = 1; row < diff; row++) {
 	    MvPrintw(LINES - row, start + (row * direction),
 		     (direction < 0) ? "\\" : "/");
 	    if (flag++) {
