}
        for _, c := range s {
                switch {
-               case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c):
+               case strings.ContainsRune("!#$%&()*+-./:;<=>?@[]^_{|}~ ", c):
                        // Backslash and quote chars are reserved, but
                        // otherwise any punctuation chars are allowed
                        // in a tag name.
 
 }
 
 type punctuationTag struct {
-       V string `json:"!#$%&()*+-./:<=>?@[]^_{|}~"` // https://golang.org/issue/3546
+       V string `json:"!#$%&()*+-./:;<=>?@[]^_{|}~ "` // https://golang.org/issue/3546
 }
 
 type dashTag struct {
        {badFormatTag{"Orfevre"}, "Orfevre", "Y"},
        {badCodeTag{"Reliable Man"}, "Reliable Man", "Z"},
        {percentSlashTag{"brut"}, "brut", "text/html%"},
-       {punctuationTag{"Union Rags"}, "Union Rags", "!#$%&()*+-./:<=>?@[]^_{|}~"},
+       {punctuationTag{"Union Rags"}, "Union Rags", "!#$%&()*+-./:;<=>?@[]^_{|}~ "},
        {spaceTag{"Perreddu"}, "Perreddu", "With space"},
        {unicodeTag{"Loukanikos"}, "Loukanikos", "Ελλάδα"},
 }