diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py
index d185eaf8468e25fd6062ca0f768115fdafe9c65c..85122677ea7f8e95efc6762c3139ed16304f9f2b 100644
--- a/sickbeard/name_parser/parser.py
+++ b/sickbeard/name_parser/parser.py
@@ -85,7 +85,10 @@ class NameParser(object):
                     result.series_name = self.clean_series_name(result.series_name)
             
             if 'season_num' in named_groups:
-                result.season_number = int(match.group('season_num'))
+                tmp_season = int(match.group('season_num'))
+                if cur_regex_name == 'bare' and tmp_season in (19,20):
+                    continue
+                result.season_number = tmp_season
             
             if 'ep_num' in named_groups:
                 ep_num = self._convert_number(match.group('ep_num'))
@@ -115,7 +118,7 @@ class NameParser(object):
             
             if 'release_group' in named_groups:
                 result.release_group = match.group('release_group')
-            
+
             return result
         
         return None
diff --git a/sickbeard/name_parser/regexes.py b/sickbeard/name_parser/regexes.py
index ee8100f30bc8d472bb95d37ab9e6ef71f47bc514..85465b1ac4091f6dea2874aa8e3dc26b4990e6e0 100644
--- a/sickbeard/name_parser/regexes.py
+++ b/sickbeard/name_parser/regexes.py
@@ -140,10 +140,11 @@ ep_regexes = [
                '''
                ^((?P<series_name>.+?)[. _-]+)?             # Show_Name and separator
                (e(p(isode)?)?|part|pt)[. _-]?              # e, ep, episode, or part
-               (?P<ep_num>(\d+|[ivx]+))                    # first ep num
+               (?P<ep_num>(\d+|([ivx]+(?=[. _-]))))                    # first ep num
                ([. _-]+((and|&|to)[. _-]+)?                # and/&/to joiner
                ((e(p(isode)?)?|part|pt)[. _-]?)           # e, ep, episode, or part
-               (?P<extra_ep_num>(?!(1080|720)[pi])(\d+|[ivx]+))[. _-])*            # second ep num
+               (?P<extra_ep_num>(?!(1080|720)[pi])
+               (\d+|([ivx]+(?=[. _-]))))[. _-])*            # second ep num
                ([. _-]*(?P<extra_info>.+?)                 # Source_Quality_Etc-
                ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
                '''
@@ -165,7 +166,7 @@ ep_regexes = [
                '''
                ^((?P<series_name>.+?)[. _-]+)?             # Show_Name and separator
                (?P<ep_num>\d{2})                           # 02
-               [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
+               [. _-]+((?P<extra_info>.+?)                 # Source_Quality_Etc-
                ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
                '''
                ),
diff --git a/tests/name_parser_tests.py b/tests/name_parser_tests.py
index ea92cbc0082235c20c222fb8713673c96d96b441..c84edf5dec1c85288ae26c5ded3e48510fa64952 100644
--- a/tests/name_parser_tests.py
+++ b/tests/name_parser_tests.py
@@ -54,6 +54,8 @@ simple_test_cases = {
               'show.name.2010.123.source.quality.etc-group': parser.ParseResult(None, 'show name 2010', 1, [23], 'source.quality.etc', 'group'),
               'show.name.2010.222.123.source.quality.etc-group': parser.ParseResult(None, 'show name 2010.222', 1, [23], 'source.quality.etc', 'group'),
               'Show.Name.102': parser.ParseResult(None, 'Show Name', 1, [2]),
+              'the.event.401.hdtv-lol': parser.ParseResult(None, 'the event', 4, [1], 'hdtv', 'lol'),
+              'show.name.2010.special.hdtv-blah': None,
               },
               
               'stupid': {
@@ -183,8 +185,14 @@ class BasicTests(unittest.TestCase):
                 cur_test = cur_test_base
             if VERBOSE or verbose:
                 print 'Testing', cur_test
-            test_result = np.parse(cur_test)
+
             result = simple_test_cases[section][cur_test_base]
+            if not result:
+                self.assertRaises(parser.InvalidNameException, np.parse, cur_test)
+                return
+            else:
+                test_result = np.parse(cur_test)
+            
             if DEBUG or verbose:
                 print 'air_by_date:', test_result.air_by_date, 'air_date:', test_result.air_date
                 print test_result