diff --git a/force_bdss/api.py b/force_bdss/api.py
index a4d3c0d4bd689a439c5101bfb32fa118a316407f..aa798246e41d12c9cd0b14745c5302725c70c33c 100644
--- a/force_bdss/api.py
+++ b/force_bdss/api.py
@@ -43,4 +43,4 @@ from .ui_hooks.i_ui_hooks_factory import IUIHooksFactory  # noqa
 from .ui_hooks.base_ui_hooks_factory import BaseUIHooksFactory  # noqa
 from .ui_hooks.base_ui_hooks_manager import BaseUIHooksManager  # noqa
 
-from .local_traits import Identifier  # noqa
+from .local_traits import Identifier, PositiveInt  # noqa
diff --git a/force_bdss/local_traits.py b/force_bdss/local_traits.py
index f759aed8596558d9783bae4e0ce1f35671f3059c..12c982542bad386d9874386c3df6f2ec1077ee45 100644
--- a/force_bdss/local_traits.py
+++ b/force_bdss/local_traits.py
@@ -1,4 +1,4 @@
-from traits.api import Regex, String
+from traits.api import Regex, String, BaseInt
 
 #: Used for variable names, but allow also empty string as it's the default
 #: case and it will be present if the workflow is saved before actually
@@ -8,3 +8,19 @@ Identifier = Regex(regex="(^[^\d\W]\w*\Z|^\Z)")
 #: Identifies a CUBA type with its key. At the moment a String with
 #: no validation, but will come later.
 CUBAType = String()
+
+
+class PositiveInt(BaseInt):
+    """A positive integer trait."""
+
+    info_text = 'a positive integer'
+
+    default_value = 1
+
+    def validate(self, object, name, value):
+        int_value = super(PositiveInt, self).validate(object, name, value)
+
+        if int_value > 0:
+            return int_value
+
+        self.error(object, name, value)
diff --git a/force_bdss/tests/test_local_traits.py b/force_bdss/tests/test_local_traits.py
index d61e6d2c89520653d65431a0030ad89b362f18be..7d0c59c991be882835312c0ce661e24761f7affc 100644
--- a/force_bdss/tests/test_local_traits.py
+++ b/force_bdss/tests/test_local_traits.py
@@ -1,12 +1,13 @@
 import unittest
 from traits.api import HasStrictTraits, TraitError
 
-from force_bdss.local_traits import Identifier, CUBAType
+from force_bdss.local_traits import Identifier, CUBAType, PositiveInt
 
 
 class Traited(HasStrictTraits):
     val = Identifier()
     cuba = CUBAType()
+    positive_int = PositiveInt()
 
 
 class TestLocalTraits(unittest.TestCase):
@@ -25,3 +26,13 @@ class TestLocalTraits(unittest.TestCase):
         c = Traited()
         c.cuba = "PRESSURE"
         self.assertEqual(c.cuba, "PRESSURE")
+
+    def test_positive_int(self):
+        c = Traited()
+        with self.assertRaises(TraitError):
+            c.positive_int = 0
+
+        with self.assertRaises(TraitError):
+            c.positive_int = -1
+
+        c.positive_int = 3