diff --git a/CHANGES b/CHANGES
index 7e72527..866e76a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@
   - pycparser now carries its PLY dependency along. The pycparser/ply directory
     contains the source of PLY for the currently supported version. This makes
     distribution and testing easier.
+  - The pycparser project has moved to Bitbucket.
 
 + Version 2.08 (10.08.2012)
 
diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py
index 7770ac5..07752a5 100644
--- a/pycparser/c_lexer.py
+++ b/pycparser/c_lexer.py
@@ -68,6 +68,15 @@
         g = self.lexer.token()
         return g
 
+    def find_tok_column(self, token):
+        """ Find the column of the token in its line.
+        """
+        i = token.lexpos
+        while i > 0:
+            if self.lexer.lexdata[i] == '\n': break
+            i -= 1
+        return (token.lexpos - i) + 1
+
     ######################--   PRIVATE   --######################
     
     ##
@@ -78,15 +87,8 @@
         self.error_func(msg, location[0], location[1])
         self.lexer.skip(1)
     
-    def _find_tok_column(self, token):
-        i = token.lexpos
-        while i > 0:
-            if self.lexer.lexdata[i] == '\n': break
-            i -= 1
-        return (token.lexpos - i) + 1
-    
     def _make_tok_location(self, token):
-        return (token.lineno, self._find_tok_column(token))
+        return (token.lineno, self.find_tok_column(token))
     
     ##
     ## Reserved keywords
diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py
index ddca893..6c17971 100644
--- a/pycparser/c_parser.py
+++ b/pycparser/c_parser.py
@@ -1419,7 +1419,8 @@
         if p:
             self._parse_error(
                 'before: %s' % p.value, 
-                self._coord(p.lineno))
+                self._coord(lineno=p.lineno,
+                            column=self.clex.find_tok_column(p)))
         else:
             self._parse_error('At end of input', '')
 
diff --git a/z_test.py b/z_test.py
index 57c1a19..a87a9ae 100644
--- a/z_test.py
+++ b/z_test.py
@@ -96,7 +96,7 @@
     #--------------- Parsing
     source_code = r'''
     typedef int int8_t;
-    typedef signed char int8_t;
+    kw*
     
     
     '''
