Index: django/utils/html.py
===================================================================
--- django/utils/html.py	(revision 5505)
+++ django/utils/html.py	(working copy)
@@ -57,12 +57,12 @@
     www. links. Links can have trailing punctuation (periods, commas, close-parens)
     and leading punctuation (opening parens) and it'll still do the right thing.
 
-    If trim_url_limit is not None, the URLs in link text will be limited to
-    trim_url_limit characters.
+    If trim_url_limit is not None, the URLs in link text longer than this limit
+    will truncated to trim_url_limit-3 characters and appended with an elipsis.
 
     If nofollow is True, the URLs in link text will get a rel="nofollow" attribute.
     """
-    trim_url = lambda x, limit=trim_url_limit: limit is not None and (x[:limit] + (len(x) >=limit and '...' or ''))  or x
+    trim_url = lambda x, limit=trim_url_limit: limit is not None and len(x) > limit and ('%s...' % x[:max(0, limit-3)]) or x
     words = word_split_re.split(text)
     nofollow_attr = nofollow and ' rel="nofollow"' or ''
     for i, word in enumerate(words):
Index: docs/templates.txt
===================================================================
--- docs/templates.txt	(revision 5505)
+++ docs/templates.txt	(working copy)
@@ -1266,7 +1266,8 @@
 urlizetrunc
 ~~~~~~~~~~~
 
-Converts URLs into clickable links, truncating URLs to the given character limit.
+Converts URLs into clickable links, truncating URLs longer than the given
+character limit.
 
 **Argument:** Length to truncate URLs to
 
Index: tests/regressiontests/defaultfilters/tests.py
===================================================================
--- tests/regressiontests/defaultfilters/tests.py	(revision 5505)
+++ tests/regressiontests/defaultfilters/tests.py	(working copy)
@@ -121,8 +121,17 @@
 '<a href="http://short.com/" rel="nofollow">http://short.com/</a>'
 
 >>> urlizetrunc('http://www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&meta=', 20)
-'<a href="http://www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&meta=" rel="nofollow">http://www.google.co...</a>'
+'<a href="http://www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&meta=" rel="nofollow">http://www.google...</a>'
 
+# Check truncating of URIs which are the exact length
+>>> uri = 'http://31characteruri.com/test/'
+>>> len(uri)
+31
+>>> urlizetrunc(uri, 31)
+'<a href="http://31characteruri.com/test/" rel="nofollow">http://31characteruri.com/test/</a>'
+>>> urlizetrunc(uri, 30)
+'<a href="http://31characteruri.com/test/" rel="nofollow">http://31characteruri.com/t...</a>'
+
 >>> wordcount('')
 0
 
