diff -Nur ./pianobooster-0.6.7~svn156.orig/src/Conductor.cpp ./pianobooster-0.6.7~svn156/src/Conductor.cpp
--- ./pianobooster-0.6.7~svn156.orig/src/Conductor.cpp	2013-09-04 18:10:24.000000000 -0500
+++ ./pianobooster-0.6.7~svn156/src/Conductor.cpp	2017-09-26 03:08:50.999244253 -0500
@@ -680,7 +680,7 @@
     }
     else
     {
-        pianistInput(inputNote);
+        pianistInput(inputNote); 
     }
 }
 
@@ -744,6 +744,28 @@
 
                 m_piano->addPianistNote(hand, inputNote, false);
                 m_rating.wrongNotes(1);
+
+		if (m_settings->followThroughErrors() && m_playMode == PB_PLAY_MODE_followYou) // If the setting is checked, errors cause following too
+		  {
+		    if (m_chordDeltaTime <= -m_cfg_playZoneEarly) // We're hitting bad notes, but earlier than the zone (so ignore them)
+		      {
+			m_piano->clear();
+			m_savedNoteQueue->clear();
+			m_savedNoteOffQueue->clear();
+		      }
+		    else // Hitting bad notes within the zone (so register them)
+		      {
+			// Register the wrong note in the ratings calculation (if not as missed notes, I don't believe it's factored in)
+			missedNotesColour(Cfg::pianoBadColour());
+			m_rating.lateNotes(m_wantedChord.length() - m_goodPlayedNotes.length());
+			setEventBits(EVENT_BITS_forceRatingRedraw);
+			fetchNextChord(); // Skip through the wrong note and continue to the next
+			// Clear & ignore any further slips until in range of the next note's zone
+			m_piano->clear();
+			m_savedNoteQueue->clear();
+			m_savedNoteOffQueue->clear();
+		      }
+		  }
             }
             else
                 m_piano->addPianistNote(hand, inputNote, true);
@@ -1037,7 +1059,7 @@
                             m_savedNoteOffQueue->push(m_nextMidiEvent);
                         else
                             ppLogDebug("Warning the m_savedNoteOffQueue is full");
-                    }
+		    }
                 }
                 else
                 {
diff -Nur ./pianobooster-0.6.7~svn156.orig/src/GuiPreferencesDialog.cpp ./pianobooster-0.6.7~svn156/src/GuiPreferencesDialog.cpp
--- ./pianobooster-0.6.7~svn156.orig/src/GuiPreferencesDialog.cpp	2010-06-03 16:28:59.000000000 -0500
+++ ./pianobooster-0.6.7~svn156/src/GuiPreferencesDialog.cpp	2017-09-25 16:47:31.007585075 -0500
@@ -61,6 +61,7 @@
     showNoteNamesCheck->setChecked(m_settings->isNoteNamesEnabled());
     courtesyAccidentalsCheck->setChecked(m_settings->displayCourtesyAccidentals());
     showTutorPagesCheck->setChecked(m_settings->isTutorPagesEnabled());
+    followThroughErrorsCheck->setChecked(m_settings->isFollowThroughErrorsEnabled());
     followStopPointCombo->setCurrentIndex(m_song->cfg_stopPointMode);
 }
 
@@ -73,6 +74,7 @@
     m_settings->setNoteNamesEnabled( showNoteNamesCheck->isChecked());
     m_settings->setCourtesyAccidentals( courtesyAccidentalsCheck->isChecked());
     m_settings->setTutorPagesEnabled( showTutorPagesCheck->isChecked());
+    m_settings->setFollowThroughErrorsEnabled( followThroughErrorsCheck->isChecked());
     m_song->cfg_stopPointMode = static_cast<stopPointMode_t> (followStopPointCombo->currentIndex());
     m_settings->setValue("Score/StopPointMode", m_song->cfg_stopPointMode );
     m_song->refreshScroll();
diff -Nur ./pianobooster-0.6.7~svn156.orig/src/GuiPreferencesDialog.ui ./pianobooster-0.6.7~svn156/src/GuiPreferencesDialog.ui
--- ./pianobooster-0.6.7~svn156.orig/src/GuiPreferencesDialog.ui	2017-09-25 14:57:56.000000000 -0500
+++ ./pianobooster-0.6.7~svn156/src/GuiPreferencesDialog.ui	2017-09-25 16:27:29.335793563 -0500
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>339</width>
-    <height>331</height>
+    <height>399</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -25,6 +25,9 @@
      <property name="title">
       <string>Score Settings</string>
      </property>
+     <property name="checkable">
+      <bool>false</bool>
+     </property>
      <layout class="QVBoxLayout" name="verticalLayout_3">
       <item>
        <layout class="QGridLayout" name="gridLayout">
@@ -41,14 +44,14 @@
           </property>
          </widget>
         </item>
-        <item row="3" column="0">
+        <item row="4" column="0">
          <widget class="QLabel" name="label">
           <property name="text">
            <string>Follow stop point:</string>
           </property>
          </widget>
         </item>
-        <item row="3" column="1">
+        <item row="4" column="1">
          <widget class="QComboBox" name="followStopPointCombo">
           <property name="sizePolicy">
            <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -74,13 +77,6 @@
           </property>
          </spacer>
         </item>
-        <item row="0" column="0">
-         <widget class="QCheckBox" name="showNoteNamesCheck">
-          <property name="text">
-           <string>Show Note Names</string>
-          </property>
-         </widget>
-        </item>
         <item row="0" column="1">
          <spacer name="horizontalSpacer_2">
           <property name="orientation">
@@ -94,6 +90,13 @@
           </property>
          </spacer>
         </item>
+        <item row="0" column="0">
+         <widget class="QCheckBox" name="showNoteNamesCheck">
+          <property name="text">
+           <string>Show Note Names</string>
+          </property>
+         </widget>
+        </item>
         <item row="1" column="0">
          <widget class="QCheckBox" name="courtesyAccidentalsCheck">
           <property name="text">
@@ -101,6 +104,13 @@
           </property>
          </widget>
         </item>
+        <item row="3" column="0">
+         <widget class="QCheckBox" name="followThroughErrorsCheck">
+          <property name="text">
+           <string>Follow Through Errors</string>
+          </property>
+         </widget>
+        </item>
        </layout>
       </item>
      </layout>
@@ -186,8 +196,8 @@
    <slot>accept()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
+     <x>257</x>
+     <y>385</y>
     </hint>
     <hint type="destinationlabel">
      <x>157</x>
@@ -202,8 +212,8 @@
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
+     <x>325</x>
+     <y>385</y>
     </hint>
     <hint type="destinationlabel">
      <x>286</x>
diff -Nur ./pianobooster-0.6.7~svn156.orig/src/Settings.cpp ./pianobooster-0.6.7~svn156/src/Settings.cpp
--- ./pianobooster-0.6.7~svn156.orig/src/Settings.cpp	2017-09-25 14:57:56.000000000 -0500
+++ ./pianobooster-0.6.7~svn156/src/Settings.cpp	2017-09-25 16:56:47.735262417 -0500
@@ -68,6 +68,7 @@
     m_noteNamesEnabled = value("Score/NoteNames", true ).toBool();
     m_tutorPagesEnabled = value("Tutor/TutorPages", true ).toBool();
     CNotation::setCourtesyAccidentals(value("Score/CourtesyAccidentals", false ).toBool());
+    m_followThroughErrorsEnabled = value("Score/FollowThroughErrors", true ).toBool();
 }
 
 void CSettings::setDefaultValue(const QString & key, const QVariant & value )
@@ -104,6 +105,11 @@
     setValue("Score/CourtesyAccidentals", value );
 }
 
+void CSettings::setFollowThroughErrorsEnabled(bool value) {
+    m_followThroughErrorsEnabled = value;
+    setValue("Score/FollowThroughErrors", value );
+}
+
 // Open a document if it exists or else create it (also delete an duplicates
 QDomElement CSettings::openDomElement(QDomElement parent, const QString & elementName, const QString & attributeName)
 {
diff -Nur ./pianobooster-0.6.7~svn156.orig/src/Settings.h ./pianobooster-0.6.7~svn156/src/Settings.h
--- ./pianobooster-0.6.7~svn156.orig/src/Settings.h	2010-06-03 16:28:59.000000000 -0500
+++ ./pianobooster-0.6.7~svn156/src/Settings.h	2017-09-25 16:39:55.128480748 -0500
@@ -52,10 +52,12 @@
     bool displayCourtesyAccidentals() { return CNotation::displayCourtesyAccidentals(); }
 
     bool isTutorPagesEnabled() { return m_tutorPagesEnabled; }
+    bool isFollowThroughErrorsEnabled() { return m_followThroughErrorsEnabled; }
 
     /// Saves in the .ini file whether the user wants to show the note names
     void setNoteNamesEnabled(bool value);
     void setTutorPagesEnabled(bool value);
+    void setFollowThroughErrorsEnabled(bool value);
 
     void setCourtesyAccidentals(bool value);
     void setAdvancedMode(bool value) { m_advancedMode = value;}
@@ -65,6 +67,11 @@
         return m_noteNamesEnabled;
     }
 
+    /// returns true if the user wants Follow Skill to ignore errors
+    bool followThroughErrors(){
+        return m_followThroughErrorsEnabled;
+    }
+
     void updateTutorPage();
     void openSongFile(const QString & filename);
     QString getCurrentSongName() { return m_currentSongName; }
@@ -143,6 +150,7 @@
     bool m_noteNamesEnabled;
     bool m_tutorPagesEnabled;
     bool m_advancedMode;
+    bool m_followThroughErrorsEnabled;
     QString m_bookPath;
     QString m_currentBookName;
     QString m_currentSongName;
