diff --git a/src/mtime_iso8601.rl b/src/mtime_iso8601.rl
index 12d3d2695c0ff7e7592342141037017aaa887f47..618956a57a996cb8df5b22f0cabe601aba4b9a46 100644
--- a/src/mtime_iso8601.rl
+++ b/src/mtime_iso8601.rl
@@ -110,14 +110,15 @@ date_machine( char *str, ISO8601_STATUS* stat, struct internal_datetime* dtObj,
 	      _year[0] = '-';
 
 	    char *end;
-	    dtObj->year = strtol(_year,&end, 10);
-	    
+	    dtObj->year = strtol(_year, &end, 10);
+	                
             //TODO on LUIS: Should we have similar range checks on duration long strings now that we support arbitrariry strigs like PT1000202S?
 	    /* Year might be too large. */
-	    if ((errno == ERANGE) || (dtObj->year > YEAR_UPPER_BOUND) || (dtObj->year < YEAR_LOWER_BOUND))
-	      {
-		RAISE_YEAR_OUT_OF_BOUND_EXCEPTION = true;
-	      }
+            if (end == _year)            
+              if ((errno == ERANGE) || (dtObj->year > YEAR_UPPER_BOUND) || (dtObj->year < YEAR_LOWER_BOUND))
+                {
+                  RAISE_YEAR_OUT_OF_BOUND_EXCEPTION = true;
+                }
 	  }
 
 	action year_month_copy