diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb
index 888e8c778975d0306e0ecc55dfa7e80b7a8ee486..138e482e0d0fee50fb4e2f0792eaa6fd634b452e 100644
--- a/Library/Homebrew/cmd/bottle.rb
+++ b/Library/Homebrew/cmd/bottle.rb
@@ -279,9 +279,10 @@ module Homebrew
     end
     bottle.rebuild rebuild
     sha256 = bottle_path.sha256
+    bottle.sha256 sha256 => Utils::Bottles.tag
 
-    if ARGV.include?("--keep-old") && !f.bottle_specification.checksums.empty?
-      old_spec = f.bottle_specification
+    old_spec = f.bottle_specification
+    if ARGV.include?("--keep-old") && !old_spec.checksums.empty?
       bad_fields = [:root_url, :prefix, :cellar, :rebuild].select do |field|
         old_spec.send(field) != bottle.send(field)
       end
@@ -290,11 +291,8 @@ module Homebrew
         bottle_path.unlink if bottle_path.exist?
         odie "--keep-old is passed but there are changes in: #{bad_fields.join ", "}"
       end
-      bottle = old_spec
     end
 
-    bottle.sha256 sha256 => Utils::Bottles.tag
-
     output = bottle_output bottle
 
     puts "./#{filename}"
@@ -325,19 +323,6 @@ module Homebrew
           },
         },
       }
-      if ARGV.include?("--keep-old")
-        bottle.checksums.each do |hash_type, checksums|
-          checksums.each do |checksum_hash|
-            checksum_hash.each do |checksum, tag|
-              tag_hash = {}
-              tag_hash["filename"] ||= Bottle::Filename.create(f, tag, rebuild).to_s
-              tag_hash[hash_type.to_s] ||= checksum.hexdigest
-              json[f.full_name]["bottle"]["tags"][tag.to_s] ||= tag_hash
-            end
-          end
-        end
-      end
-
       File.open("#{filename.prefix}.bottle.json", "w") do |file|
         file.write Utils::JSON.dump json
       end