diff --git a/internal/session_settings.go b/internal/session_settings.go
index f679473e6..ef7413ebd 100644
--- a/internal/session_settings.go
+++ b/internal/session_settings.go
@@ -18,7 +18,8 @@ type SessionSettings struct {
 	SkipCheckLatency             bool
 	MaxLatency                   time.Duration
 	DisableMessagePersist        bool
-	ResetSeqTime                 TimeOfDay
+	TimeZone                     *time.Location
+	ResetSeqTime                 time.Time
 	EnableResetSeqTime           bool
 
 	// Required on logon for FIX.T.1 messages.
diff --git a/session_factory.go b/session_factory.go
index dbb8e0a87..f530ddf14 100644
--- a/session_factory.go
+++ b/session_factory.go
@@ -63,6 +63,8 @@ type sessionFactory struct {
 	BuildInitiators bool
 }
 
+const shortForm = "15:04:05"
+
 // Creates Session, associates with internal session registry.
 func (f sessionFactory) createSession(
 	sessionID SessionID, storeFactory MessageStoreFactory, settings *SessionSettings,
@@ -280,6 +282,7 @@ func (f sessionFactory) newSession(
 				return
 			}
 		}
+		s.TimeZone = loc
 
 		if !settings.HasSetting(config.StartDay) && !settings.HasSetting(config.EndDay) {
 			var weekdays []time.Weekday
@@ -354,11 +357,11 @@ func (f sessionFactory) newSession(
 			return
 		}
 
-		var seqTime internal.TimeOfDay
-		if seqTime, err = internal.ParseTimeOfDay(seqTimeStr); err != nil {
+		var seqTime time.Time
+		if seqTime, err = time.ParseInLocation(shortForm, seqTimeStr, s.TimeZone); err != nil {
 			err = errors.Wrapf(
 				err, "problem parsing time of day '%v' for setting '%v",
-				settings.settings[config.StartTime], config.StartTime,
+				settings.settings[config.ResetSeqTime], config.ResetSeqTime,
 			)
 			return
 		}
diff --git a/session_state.go b/session_state.go
index c0c898b74..d97d464e1 100644
--- a/session_state.go
+++ b/session_state.go
@@ -157,8 +157,9 @@ func (sm *stateMachine) CheckSessionTime(session *session, now time.Time) {
 
 func (sm *stateMachine) CheckResetTime(session *session, now time.Time) {
 	if session.EnableResetSeqTime {
-		ts := internal.NewTimeOfDay(now.Clock())
-		if session.ResetSeqTime == ts {
+		if session.ResetSeqTime.Hour() == now.Hour() &&
+			session.ResetSeqTime.Minute() == now.Minute() &&
+			session.ResetSeqTime.Second() == now.Second() {
 			session.sendLogonInReplyTo(true, nil)
 		}
 	}
diff --git a/session_test.go b/session_test.go
index 83226fef7..34634f1f3 100644
--- a/session_test.go
+++ b/session_test.go
@@ -1007,7 +1007,7 @@ func (s *SessionSuite) TestSeqNumResetTime() {
 	s.SetupTest()
 
 	now := time.Now().UTC()
-	s.session.ResetSeqTime = internal.NewTimeOfDay(now.Clock())
+	s.session.ResetSeqTime = now
 	s.session.EnableResetSeqTime = true
 
 	s.IncrNextSenderMsgSeqNum()