diff --git a/swiftclient/shell.py b/swiftclient/shell.py
index 15be20ae..aa95c113 100755
--- a/swiftclient/shell.py
+++ b/swiftclient/shell.py
@@ -93,11 +93,11 @@ def st_delete(parser, args, output_manager):
     parser.add_option(
         '', '--object-threads', type=int,
         default=10, help='Number of threads to use for deleting objects. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     parser.add_option(
         '', '--container-threads', type=int,
         default=10, help='Number of threads to use for deleting containers. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     (options, args) = parse_args(parser, args)
     args = args[1:]
     if (not args and not options.yes_all) or (args and options.yes_all):
@@ -106,6 +106,22 @@ def st_delete(parser, args, output_manager):
                              st_delete_help)
         return
 
+    if options.object_threads <= 0:
+        output_manager.error(
+            'ERROR: option --object-threads should be a positive integer.'
+            '\n\nUsage: %s delete %s\n%s',
+            BASENAME, st_delete_options,
+            st_delete_help)
+        return
+
+    if options.container_threads <= 0:
+        output_manager.error(
+            'ERROR: option --container-threads should be a positive integer.'
+            '\n\nUsage: %s delete %s\n%s',
+            BASENAME, st_delete_options,
+            st_delete_help)
+        return
+
     _opts = vars(options)
     _opts['object_dd_threads'] = options.object_threads
     with SwiftService(options=_opts) as swift:
@@ -273,11 +289,11 @@ def st_download(parser, args, output_manager):
     parser.add_option(
         '', '--object-threads', type=int,
         default=10, help='Number of threads to use for downloading objects. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     parser.add_option(
         '', '--container-threads', type=int, default=10,
         help='Number of threads to use for downloading containers. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     parser.add_option(
         '', '--no-download', action='store_true',
         default=False,
@@ -319,6 +335,20 @@ def st_download(parser, args, output_manager):
                              st_download_options, st_download_help)
         return
 
+    if options.object_threads <= 0:
+        output_manager.error(
+            'ERROR: option --object-threads should be a positive integer.\n\n'
+            'Usage: %s download %s\n%s', BASENAME,
+            st_download_options, st_download_help)
+        return
+
+    if options.container_threads <= 0:
+        output_manager.error(
+            'ERROR: option --container-threads should be a positive integer.'
+            '\n\nUsage: %s download %s\n%s', BASENAME,
+            st_download_options, st_download_help)
+        return
+
     _opts = vars(options)
     _opts['object_dd_threads'] = options.object_threads
     with SwiftService(options=_opts) as swift:
@@ -804,11 +834,11 @@ def st_upload(parser, args, output_manager):
     parser.add_option(
         '', '--object-threads', type=int, default=10,
         help='Number of threads to use for uploading full objects. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     parser.add_option(
         '', '--segment-threads', type=int, default=10,
         help='Number of threads to use for uploading object segments. '
-        'Default is 10.')
+        'Its value must be a positive integer. Default is 10.')
     parser.add_option(
         '-H', '--header', action='append', dest='header',
         default=[], help='Set request headers with the syntax header:value. '
@@ -861,6 +891,20 @@ def st_upload(parser, args, output_manager):
             output_manager.error("segment-size should be positive")
             return
 
+    if options.object_threads <= 0:
+        output_manager.error(
+            'ERROR: option --object-threads should be a positive integer.'
+            '\n\nUsage: %s upload %s\n%s', BASENAME, st_upload_options,
+            st_upload_help)
+        return
+
+    if options.segment_threads <= 0:
+        output_manager.error(
+            'ERROR: option --segment-threads should be a positive integer.'
+            '\n\nUsage: %s upload %s\n%s', BASENAME, st_upload_options,
+            st_upload_help)
+        return
+
     _opts = vars(options)
     _opts['object_uu_threads'] = options.object_threads
     with SwiftService(options=_opts) as swift: