diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index 291aeb0..1bf6c53 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -698,6 +698,9 @@
 
     def test_repeat(self):
         self.assertEqual(list(repeat(object='a', times=3)), ['a', 'a', 'a'])
+        self.assertEqual(list(repeat(object='a', times=0)), [])
+        self.assertEqual(list(repeat(object='a', times=-1)), [])
+        self.assertEqual(list(repeat(object='a', times=-2)), [])
         self.assertEqual(zip(xrange(3),repeat('a')),
                          [(0, 'a'), (1, 'a'), (2, 'a')])
         self.assertEqual(list(repeat('a', 3)), ['a', 'a', 'a'])
@@ -714,6 +717,12 @@
         list(r)
         self.assertEqual(repr(r), 'repeat((1+0j), 0)')
 
+    def test_repeat_with_negative_times(self):
+        self.assertEqual(repr(repeat('a', -1)), "repeat('a', 0)")
+        self.assertEqual(repr(repeat('a', -2)), "repeat('a', 0)")
+        self.assertEqual(repr(repeat('a', times=-1)), "repeat('a', 0)")
+        self.assertEqual(repr(repeat('a', times=-2)), "repeat('a', 0)")
+
     def test_imap(self):
         self.assertEqual(list(imap(operator.pow, range(3), range(1,7))),
                          [0**1, 1**2, 2**3])
diff --git a/Misc/ACKS b/Misc/ACKS
index 983e048..b779210 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1384,6 +1384,7 @@
 Pauli Virtanen
 Frank Visser
 Johannes Vogel
+Vajrasky Kok
 Alex Volkov
 Guido Vranken
 Martijn Vries
diff --git a/Misc/NEWS b/Misc/NEWS
index f99c155..fc7c67d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,10 @@
 
 - Issue #21672: Fix the behavior of ntpath.join on UNC-style paths.
 
+- Issue #19145:  The times argument for itertools.repeat now handles
+  negative values the same way for keyword arguments as it does for
+  positional arguments.
+
 - Issue #21832:  Require named tuple inputs to be exact strings.
 
 - Issue #8343:  Named group error messages in the re module did not show
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index a7cd3f4..cd45eb9 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -3683,14 +3683,17 @@
 {
     repeatobject *ro;
     PyObject *element;
-    Py_ssize_t cnt = -1;
+    Py_ssize_t cnt = -1, n_kwds = 0;
     static char *kwargs[] = {"object", "times", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|n:repeat", kwargs,
                                      &element, &cnt))
         return NULL;
 
-    if (PyTuple_Size(args) == 2 && cnt < 0)
+    if (kwds != NULL)
+        n_kwds = PyDict_Size(kwds);
+    /* Does user supply times argument? */
+    if ((PyTuple_Size(args) + n_kwds == 2) && cnt < 0)
         cnt = 0;
 
     ro = (repeatobject *)type->tp_alloc(type, 0);
