diff --git a/src/blc_program.cpp b/src/blc_program.cpp
index fa7cb16ee90114068f912b1a529ec6514c93a69c..2cdd69ff12737c32eaf9610575a342849e99e320 100644
--- a/src/blc_program.cpp
+++ b/src/blc_program.cpp
@@ -408,8 +408,14 @@ void blc_program_args_display_help()
 }
 
 static void on_sigterm(int){
-    fprintf(stderr, "%s: receiving SIGTERM\n", blc_program_id);
-    exit(EXIT_SUCCESS);
+    if (blc_status==BLC_QUIT){
+        fprintf(stderr, "%s: receiving SIGTERM in quiting mode. Force to quit.\n", blc_program_id);
+        exit(EXIT_SUCCESS);
+    }
+    else {
+        fprintf(stderr, "%s: receiving SIGTERM\n", blc_program_id);
+        blc_status=BLC_QUIT;
+    }
 }
 
 static void on_sigtstp(int){