diff --git a/app/services/user_merger.rb b/app/services/user_merger.rb
index 1284dd655ef..a17089200dc 100644
--- a/app/services/user_merger.rb
+++ b/app/services/user_merger.rb
@@ -118,7 +118,7 @@ class UserMerger
                                                "x.post_number = y.post_number"])
     sql = <<~SQL
       UPDATE post_timings AS t
-      SET msecs = t.msecs + s.msecs
+      SET msecs = LEAST(t.msecs::bigint + s.msecs, 2^31 - 1)
       FROM post_timings AS s
       WHERE t.user_id = :target_user_id AND s.user_id = :source_user_id
             AND t.topic_id = s.topic_id AND t.post_number = s.post_number
diff --git a/spec/services/user_merger_spec.rb b/spec/services/user_merger_spec.rb
index 604d795c4b8..ac955db5a55 100644
--- a/spec/services/user_merger_spec.rb
+++ b/spec/services/user_merger_spec.rb
@@ -404,17 +404,21 @@ describe UserMerger do
       post1 = p1
       post2 = p2
       post3 = p3
+      post4 = p4
 
       create_post_timing(post1, source_user, 12345)
       create_post_timing(post2, source_user, 9876)
+      create_post_timing(post4, source_user, 2**31 - 100)
       create_post_timing(post2, target_user, 3333)
       create_post_timing(post3, target_user, 10000)
+      create_post_timing(post4, target_user, 5000)
 
       merge_users!
 
       expect(post_timing_msecs_for(post1, target_user)).to eq(12345)
       expect(post_timing_msecs_for(post2, target_user)).to eq(13209)
       expect(post_timing_msecs_for(post3, target_user)).to eq(10000)
+      expect(post_timing_msecs_for(post4, target_user)).to eq(2**31 - 1)
 
       expect(PostTiming.where(user_id: source_user.id).count).to eq(0)
     end