diff --git a/mythtv/libs/libmythtv/eitfixup.cpp b/mythtv/libs/libmythtv/eitfixup.cpp
index 5c4ce6c..3b14bba 100644
--- a/mythtv/libs/libmythtv/eitfixup.cpp
+++ b/mythtv/libs/libmythtv/eitfixup.cpp
@@ -208,14 +208,17 @@ EITFixUp::EITFixUp()
       m_grYear("(?:\\W?)(?:\\s?παραγωγ[ηή]ς|\\s?-|,)\\s*([1-2]{1}[0-9]{3})(?:-\\d{1,4})?",Qt::CaseInsensitive),
       m_grCountry("(?:\\W|\\b)(?:(ελλην|τουρκ|αμερικ[αά]ν|γαλλ|αγγλ|βρεττ?αν|γερμαν|ρωσσ?|ιταλ|ελβετ|σουηδ|ισπαν|πορτογαλ|μεξικ[αά]ν|κιν[εέ]ζικ|ιαπων|καναδ|βραζιλι[αά]ν)(ικ[ηή][ςσ]))",Qt::CaseInsensitive),
       m_grlongEp("\\b(?:Επ.|επεισ[οό]διο:?)\\s*(\\d+)(?:\\W?)",Qt::CaseInsensitive),
-      m_grSeason("(?:-\\s)?\\b((\\D{1,2})(?:')?|(\\d{1,2})(?:ος|ου)?)(?:\\sκ[υύ]κλο(?:[σς]|υ)){1}\\s?",Qt::CaseInsensitive),
-      m_grRealTitleinDescription("(?:^\\()([\\w\\s\\d\\D-]+)(?:\\))(?:\\s*)"),
+      m_grSeason("(?:\\W-?)*(?:\\(-\\s*)?\\b(([Α-Ω]{1,2})(?:'|΄)?|(\\d{1,2})(?:ος|ου)?)(?:\\s*κ[υύ]κλο(?:[σς]|υ)){1}\\s?",Qt::CaseInsensitive),
+      m_grRealTitleinDescription("(?:^\\()([A-Za-z\\s\\d-]+)(?:\\))(?:\\s*)"),
       // cap1 = real title
       // cap0 = real title in parentheses.
-      m_grRealTitleinTitle("(?:\\()([\\w\\s\\d\\D-]+)(?:\\))(?:\\s*$)*"),
+      m_grRealTitleinTitle("(?:\\()([A-Za-z\\s\\d-]+)(?:\\))(?:\\s*$)*"),
       // cap1 = real title
       // cap0 = real title in parentheses.
-      m_grNotPreviouslyShown("(?:\\b[Α1]['η]?\\s*(?:τηλεοπτικ[ηή]\\s*)?(?:μετ[αά]δοση|προβολ[ηή]))(?:\\W?)"),
+      m_grCommentsinTitle("(?:\\()([Α-Ωα-ω\\s\\d-]+)(?:\\))(?:\\s*$)*"),
+      // cap1 = real title
+      // cap0 = real title in parentheses.
+      m_grNotPreviouslyShown("(?:\\W?)(?:-\\s*)*(?:\\b[Α1]['΄η]?\\s*(?:τηλεοπτικ[ηή]\\s*)?(?:μετ[αά]δοση|προβολ[ηή]))(?:\\W?)",Qt::CaseInsensitive),
       // Try to exctract Greek categories from keywords in description.
       m_grEpisodeAsSubtitle("(?:^Επεισ[οό]διο:\\s?)([\\w\\s-,']+)\\.(?:\\s)?"),
       m_grCategFood("(?:\\W)?(?:εκπομπ[ηή]\\W)?(Γαστρονομ[ιί]α[σς]?|μαγειρικ[ηή][σς]?|chef|συνταγ[εέηή]|διατροφ|wine|μ[αά]γειρα[σς]?)(?:\\W)?",Qt::CaseInsensitive),
@@ -2554,6 +2557,8 @@ void EITFixUp::FixGreekSubtitle(DBEventEIT &event) const
 
 void EITFixUp::FixGreekEIT(DBEventEIT &event) const
 {
+    int position1;
+    int position2;
     //Live show
     int position;
     QRegExp tmpRegEx;
@@ -2569,7 +2574,7 @@ void EITFixUp::FixGreekEIT(DBEventEIT &event) const
     if (position != -1)
     {
         event.previouslyshown = false;
-        event.title = event.title.replace(m_grNotPreviouslyShown.cap(0), "");
+        event.title = event.title.replace(m_grNotPreviouslyShown, "");
     }
 
     // Greek Replay (Ε)
@@ -2641,37 +2646,6 @@ void EITFixUp::FixGreekEIT(DBEventEIT &event) const
         event.description.replace(tmpRegEx.cap(0), "");
     }
 
-/*
-
-    tmpRegEx = m_grDirector;
-    position = event.description.indexOf(tmpRegEx);
-    if (position != -1)
-    {
-        // director is captured in cap(1).Due to sometimes miswritten data in
-        // eit, e.g no fullstop present(!)
-        QString tmpDirectorsString = tmpRegEx.cap(1);
-        // look for actors in director string (lack of fullstop, etc)
-        tmpRegEx = m_grActors;
-        int actposition = tmpDirectorsString.indexOf(tmpRegEx);
-        if (actposition != -1)
-        {
-            tmpDirectorsString = tmpDirectorsString.replace(tmpRegEx,"");
-        }
-        const QStringList directors =
-            tmpDirectorsString.split(m_grPeopleSeparator, QString::SkipEmptyParts);
-        QStringList::const_iterator it = directors.begin();
-        for (; it != directors.end(); ++it)
-        {
-            tmpDirectorsString = it->split(":").last().trimmed().
-                    remove(QRegExp("\\.$"));
-            if (tmpDirectorsString != "")
-                event.AddPerson(DBPerson::kDirector, tmpDirectorsString);
-
-        }
-        event.description.replace(tmpRegEx.cap(0), "");
-       // directorPresent = true;
-    }
-*/
     //Try to find presenter
     tmpRegEx = m_grPres;
     position = event.description.indexOf(tmpRegEx);
@@ -2724,9 +2698,8 @@ void EITFixUp::FixGreekEIT(DBEventEIT &event) const
     QRegExp tmpSeries = m_grSeason;
     // cap(2) is the season for ΑΒΓΔ
     // cap(3) is the season for 1234
-    int position1 = tmpSeries.indexIn(event.title);
-    int position2 = tmpSeries.indexIn(event.description);
-    if ((position1 != -1) || (position2 != -1))
+    if ((position1 = tmpSeries.indexIn(event.title)) != -1
+          || (position2 = tmpSeries.indexIn(event.description)) != -1)
     {
         if (!tmpSeries.cap(2).isEmpty()) // we found a letter representing a number
         {
@@ -2776,6 +2749,17 @@ void EITFixUp::FixGreekEIT(DBEventEIT &event) const
                 event.season = 1;
         }
     }
+    // Sometimes, especially on greek national tv, they include comments in the
+    // title, e.g "connection to ert1", "ert archives".
+    // Because they obscure the real title, I'll isolate and remove them.
+
+    QRegExp tmpComment = m_grCommentsinTitle;
+    tmpComment.setMinimal(true);
+    position = event.title.indexOf(tmpComment);
+    if (position != -1)
+    {
+        event.title.replace(tmpComment.cap(0),"");
+    }
 
     // Sometimes the real (mostly English) title of a movie or series is
     // enclosed in parentheses in the event title, subtitle or description.
diff --git a/mythtv/libs/libmythtv/eitfixup.h b/mythtv/libs/libmythtv/eitfixup.h
index 67cbcd0..c759868 100644
--- a/mythtv/libs/libmythtv/eitfixup.h
+++ b/mythtv/libs/libmythtv/eitfixup.h
@@ -276,6 +276,7 @@ class EITFixUp
     const QRegExp m_grSeries;
     const QRegExp m_grRealTitleinDescription; // The original title is often in the descr in parenthesis.
     const QRegExp m_grRealTitleinTitle; // The original title is often in the title in parenthesis.
+    const QRegExp m_grCommentsinTitle; // Sometimes esp. national stations include comments in the title eg "(ert arxeio)"
     const QRegExp m_grNotPreviouslyShown; // Not previously shown on TV
     const QRegExp m_grEpisodeAsSubtitle; // Description field: "^Episode: Lion in the cage. (Description follows)"
     const QRegExp m_grCategFood; // Greek category food
diff --git a/mythtv/libs/libmythtv/eithelper.cpp b/mythtv/libs/libmythtv/eithelper.cpp
index 845a7b4..56d62b9 100644
--- a/mythtv/libs/libmythtv/eithelper.cpp
+++ b/mythtv/libs/libmythtv/eithelper.cpp
@@ -1411,6 +1411,7 @@ static void init_fixup(FixupMap &fix)
     fix[  100LL << 32 |  8492LL << 16 ] = // Ant1,Alpha,Art,10E
     fix[  102LL << 32 |  8492LL << 16 ] = // Mega,Star,SKAI,M.tv
     fix[  320LL << 32 |  8492LL << 16 ] = // Astra,Thessalia,TRT,TV10,ZEYS
+        EITFixUp::kEFixForceISO8859_7 |
         EITFixUp::kFixGreekEIT |
         EITFixUp::kFixGreekCategories;
     fix[    2LL << 32 |  8492LL << 16 ] = // N1,Nplus,NHD,Vouli
@@ -1419,6 +1420,16 @@ static void init_fixup(FixupMap &fix)
         EITFixUp::kFixGreekEIT |              // cut in db. Will move to descr.
         EITFixUp::kFixGreekCategories;
 
+    //DVB-S & S2 Greek Nova Provider
+    // Hotbird 11823H DVB-S
+    fix[ 5500LL << 32 |  318LL << 16 ] = EITFixUp::kEFixForceISO8859_7;
+    // Hotbird 11938H DVB-S
+    fix[ 6100LL << 32 |  318LL << 16 ] = EITFixUp::kEFixForceISO8859_7;
+    // Hotbird 12130H DVB-S2
+    fix[ 7100LL << 32 |  318LL << 16 ] = EITFixUp::kEFixForceISO8859_7;
+    // Hotbird 12169H DVB-S2
+    fix[ 7300LL << 32 |  318LL << 16 ] = EITFixUp::kEFixForceISO8859_7;
+
     // DVB-S Star One C2 70W (Brazil)
     // it has original_network_id = 1 like Astra on 19.2E, but transport_id does
     // not collide at the moment
