diff --git a/Gemfile b/Gemfile
index 1282ff0e20d35b1edf2589f6663d05f6ff9f2e43..a21f9f19458f395b46de1e59a0a96c1cc58fa69c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -166,7 +166,7 @@ gem 'redis-namespace', '~> 1.6.0'
 gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch'
 
 # Cron Parser
-gem 'fugit', '~> 1.1'
+gem 'fugit', '~> 1.2.1'
 
 # HTTP requests
 gem 'httparty', '~> 0.16.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index 9b1a036030a8c0befa216fa1dea641fb6180eb62..9522f8fa9e0aeb2fb0c5552a5941159a589fb5cd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -190,7 +190,7 @@ GEM
     equalizer (0.0.11)
     erubi (1.8.0)
     escape_utils (1.2.1)
-    et-orbi (1.1.7)
+    et-orbi (1.2.1)
       tzinfo
     eventmachine (1.2.7)
     excon (0.62.0)
@@ -264,8 +264,8 @@ GEM
     foreman (0.84.0)
       thor (~> 0.19.1)
     formatador (0.2.5)
-    fugit (1.1.9)
-      et-orbi (~> 1.1, >= 1.1.7)
+    fugit (1.2.1)
+      et-orbi (~> 1.1, >= 1.1.8)
       raabro (~> 1.1)
     fuubar (2.2.0)
       rspec-core (~> 3.0)
@@ -1056,7 +1056,7 @@ DEPENDENCIES
   fog-rackspace (~> 0.1.1)
   font-awesome-rails (~> 4.7)
   foreman (~> 0.84.0)
-  fugit (~> 1.1)
+  fugit (~> 1.2.1)
   fuubar (~> 2.2.0)
   gemojione (~> 3.3)
   gettext (~> 3.2.2)
diff --git a/lib/gitlab/ci/cron_parser.rb b/lib/gitlab/ci/cron_parser.rb
index ae524654b7d56711059a17f1f5fefe7b3cdacd42..94f4a4e36c9c44be331486faae51fc2a125aa7fa 100644
--- a/lib/gitlab/ci/cron_parser.rb
+++ b/lib/gitlab/ci/cron_parser.rb
@@ -13,7 +13,7 @@ def initialize(cron, cron_timezone = 'UTC')
 
       def next_time_from(time)
         @cron_line ||= try_parse_cron(@cron, @cron_timezone)
-        find_next_time(time) if @cron_line.present?
+        @cron_line.next_time(time).utc.in_time_zone(Time.zone) if @cron_line.present?
       end
 
       def cron_valid?
@@ -49,14 +49,6 @@ def timezone_name(timezone)
       def try_parse_cron(cron, cron_timezone)
         Fugit::Cron.parse("#{cron} #{cron_timezone}")
       end
-
-      def find_next_time(time)
-        @cron_line.next_time(time).utc.in_time_zone(Time.zone)
-      rescue RuntimeError => error
-        raise error unless error.message =~ /too many loops/
-        # Fugit::Cron raises a RuntimeError if :next_time does not find the next schedule 
-        # given an invalid pattern - E.g. try_parse_cron('0 12 31 2 *')
-      end
     end
   end
 end
diff --git a/spec/lib/gitlab/ci/cron_parser_spec.rb b/spec/lib/gitlab/ci/cron_parser_spec.rb
index a228334d53e9912b2d2d845046a57d4d5958e7aa..491e3fba9d9cc1bace5f61cdcc0b83af58ad5db0 100644
--- a/spec/lib/gitlab/ci/cron_parser_spec.rb
+++ b/spec/lib/gitlab/ci/cron_parser_spec.rb
@@ -181,13 +181,6 @@
 
       it { expect(subject).to be_nil }
     end
-
-    context 'when cron is scheduled to a non existent day' do
-      let(:cron) { '0 12 31 2 *' }
-      let(:cron_timezone) { 'UTC' }
-
-      it { expect(subject).to be_nil }
-    end
   end
 
   describe '#cron_valid?' do