diff --git a/.gitignore b/.gitignore
index e5accb1..7942336 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 SOURCES/javazic.tar.gz
-SOURCES/tzcode2015b.tar.gz
-SOURCES/tzdata2015b.tar.gz
+SOURCES/tzcode2015c.tar.gz
+SOURCES/tzdata2015c.tar.gz
diff --git a/.tzdata.metadata b/.tzdata.metadata
index 8832dc9..08eb8b9 100644
--- a/.tzdata.metadata
+++ b/.tzdata.metadata
@@ -1,3 +1,3 @@
 ee8ad215161cd132e65e2be447b279457158b540 SOURCES/javazic.tar.gz
-b080e6effce55c2a4a7153d9ea3716f69d34d379 SOURCES/tzcode2015b.tar.gz
-1efd383ad6b43eeee95f603e3a6ea6ff4bd55b81 SOURCES/tzdata2015b.tar.gz
+ae6a6e7bfbe8d769904eb57c4b1aecf35f5d4e38 SOURCES/tzcode2015c.tar.gz
+8e95901d8fe9d4eb052a6900239e6364ec47b2d7 SOURCES/tzdata2015c.tar.gz
diff --git a/SOURCES/7090844.patch b/SOURCES/7090844.patch
new file mode 100644
index 0000000..fd5b531
--- /dev/null
+++ b/SOURCES/7090844.patch
@@ -0,0 +1,38 @@
+--- sun/tools/javazic/Mappings.java.orig	2015-04-13 12:42:30.000000000 -0400
++++ sun/tools/javazic/Mappings.java	2015-04-13 12:43:32.000000000 -0400
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -26,9 +26,6 @@
+ package sun.tools.javazic;
+ 
+ import	java.util.ArrayList;
+-import	java.util.HashMap;
+-import	java.util.HashSet;
+-import	java.util.Iterator;
+ import	java.util.LinkedList;
+ import	java.util.List;
+ import	java.util.Map;
+@@ -79,8 +76,8 @@
+ 	    // If the GMT offset of this Zone will change in some
+ 	    // future time, this Zone is added to the exclude list.
+             boolean isExcluded = false;
+-	    if (zone.size() > 1) {
+-		ZoneRec zrec = zone.get(zone.size()-2);
++            for (int i = 0; i < zone.size(); i++) {
++                ZoneRec zrec = zone.get(i);
+ 		if ((zrec.getGmtOffset() != rawOffset)
+ 		    && (zrec.getUntilTime(0) > Time.getCurrentTime())) {
+ 		    if (excludeList == null) {
+@@ -88,6 +85,7 @@
+ 		    }
+ 		    excludeList.add(zone.getName());
+                     isExcluded = true;
++                    break;
+ 		}
+ 	    }
+ 
diff --git a/SOURCES/7133138.patch b/SOURCES/7133138.patch
new file mode 100644
index 0000000..882f15f
--- /dev/null
+++ b/SOURCES/7133138.patch
@@ -0,0 +1,38 @@
+--- sun/tools/javazic/Mappings.java.orig	2015-04-13 12:44:10.000000000 -0400
++++ sun/tools/javazic/Mappings.java	2015-04-13 12:45:28.000000000 -0400
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -26,6 +26,7 @@
+ package sun.tools.javazic;
+ 
+ import	java.util.ArrayList;
++import java.util.HashMap;
+ import	java.util.LinkedList;
+ import	java.util.List;
+ import	java.util.Map;
+@@ -162,6 +163,20 @@
+ 	for (String key : toBeRemoved) {
+ 	    aliases.remove(key);
+ 	}
++        // Eliminate any alias-to-alias mappings. For example, if
++        // there are A->B and B->C, A->B is changed to A->C.
++        Map<String, String> newMap = new HashMap<String, String>();
++        for (String key : aliases.keySet()) {
++            String realid = aliases.get(key);
++            String leaf = realid;
++            while (aliases.get(leaf) != null) {
++                leaf = aliases.get(leaf);
++            }
++            if (!realid.equals(leaf)) {
++                newMap.put(key, leaf);
++            }
++        }
++        aliases.putAll(newMap);
+     }
+ 
+     Map<String,String> getAliases() {
diff --git a/SOURCES/javazic-exclusion-fix.patch b/SOURCES/javazic-exclusion-fix.patch
deleted file mode 100644
index b9dfa4b..0000000
--- a/SOURCES/javazic-exclusion-fix.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-# Patch based on fix in JDK8 tree by Yuka Kamiya from Oracle:
-# http://hg.openjdk.java.net/jdk8/tl/jdk/rev/f114bddac6d6
-
-diff -up ./sun/tools/javazic/Mappings.java.sav ./sun/tools/javazic/Mappings.java
---- ./sun/tools/javazic/Mappings.java.sav	2011-11-03 16:31:53.000000000 -0400
-+++ ./sun/tools/javazic/Mappings.java	2011-11-03 16:41:44.000000000 -0400
-@@ -77,15 +77,17 @@ class Mappings {
- 	    int rawOffset = zone.get(zone.size()-1).getGmtOffset();
- 	    // If the GMT offset of this Zone will change in some
- 	    // future time, this Zone is added to the exclude list.
--	    if (zone.size() > 1) {
--		ZoneRec zrec = zone.get(zone.size()-2);
-+	    boolean isExcluded = false;
-+	    for (int i = 0; i < zone.size(); i++) {
-+		ZoneRec zrec = zone.get(i);
- 		if ((zrec.getGmtOffset() != rawOffset)
- 		    && (zrec.getUntilTime(0) > Time.getCurrentTime())) {
- 		    if (excludeList == null) {
- 			excludeList = new ArrayList<String>();
- 		    }
- 		    excludeList.add(zone.getName());
--		    continue;
-+		    isExcluded = true;
-+		    break;
- 		}
- 	    }
- 
-@@ -101,9 +103,13 @@ class Mappings {
- 		rawOffsetsIndex.add(i, rawOffset);
- 
- 		Set<String> perRawOffset = new TreeSet<String>();
-+		if (!isExcluded) {
-+		    perRawOffset = new TreeSet<String>();
-+		}
-+
- 		perRawOffset.add(zonename);
- 		rawOffsetsIndexTable.add(i, perRawOffset);
--	    } else {
-+	    } else if (!isExcluded) {
- 		int i = rawOffsetsIndex.indexOf(new Integer(rawOffset));
- 		Set<String> perRawOffset = rawOffsetsIndexTable.get(i);
- 		perRawOffset.add(zonename);
diff --git a/SOURCES/rebase-01.patch b/SOURCES/rebase-01.patch
new file mode 100644
index 0000000..bca6ed4
--- /dev/null
+++ b/SOURCES/rebase-01.patch
@@ -0,0 +1,31 @@
+--- sun/tools/javazic/Mappings.java.orig	2007-08-30 03:55:48.000000000 -0400
++++ sun/tools/javazic/Mappings.java	2015-04-13 12:39:44.000000000 -0400
+@@ -1,12 +1,12 @@
+ /*
+- * Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU General Public License version 2 only, as
+- * published by the Free Software Foundation.  Sun designates this
++ * published by the Free Software Foundation.  Oracle designates this
+  * particular file as subject to the "Classpath" exception as provided
+- * by Sun in the LICENSE file that accompanied this code.
++ * by Oracle in the LICENSE file that accompanied this code.
+  *
+  * This code is distributed in the hope that it will be useful, but WITHOUT
+  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+@@ -18,9 +18,9 @@
+  * 2 along with this work; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+  *
+- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+- * CA 95054 USA or visit www.sun.com if you need additional information or
+- * have any questions.
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
+  */
+ 
+ package sun.tools.javazic;
diff --git a/SOURCES/rebase-02.patch b/SOURCES/rebase-02.patch
new file mode 100644
index 0000000..0f57125
--- /dev/null
+++ b/SOURCES/rebase-02.patch
@@ -0,0 +1,36 @@
+--- sun/tools/javazic/Mappings.java.orig	2015-04-13 12:40:26.000000000 -0400
++++ sun/tools/javazic/Mappings.java	2015-04-13 12:42:11.000000000 -0400
+@@ -75,8 +75,10 @@
+ 	    Zone zone = zones.get(zoneName);
+ 	    String zonename = zone.getName();
+ 	    int rawOffset = zone.get(zone.size()-1).getGmtOffset();
++
+ 	    // If the GMT offset of this Zone will change in some
+ 	    // future time, this Zone is added to the exclude list.
++            boolean isExcluded = false;
+ 	    if (zone.size() > 1) {
+ 		ZoneRec zrec = zone.get(zone.size()-2);
+ 		if ((zrec.getGmtOffset() != rawOffset)
+@@ -85,7 +87,7 @@
+ 			excludeList = new ArrayList<String>();
+ 		    }
+ 		    excludeList.add(zone.getName());
+-		    continue;
++                    isExcluded = true;
+ 		}
+ 	    }
+ 
+@@ -101,9 +103,11 @@
+ 		rawOffsetsIndex.add(i, rawOffset);
+ 
+ 		Set<String> perRawOffset = new TreeSet<String>();
+-		perRawOffset.add(zonename);
++                if (!isExcluded) {
++                    perRawOffset.add(zonename);
++                }
+ 		rawOffsetsIndexTable.add(i, perRawOffset);
+-	    } else {
++            } else if (!isExcluded) {
+ 		int i = rawOffsetsIndex.indexOf(new Integer(rawOffset));
+ 		Set<String> perRawOffset = rawOffsetsIndexTable.get(i);
+ 		perRawOffset.add(zonename);
diff --git a/SPECS/tzdata.spec b/SPECS/tzdata.spec
index e371226..e153c21 100644
--- a/SPECS/tzdata.spec
+++ b/SPECS/tzdata.spec
@@ -1,8 +1,8 @@
 Summary: Timezone data
 Name: tzdata
-Version: 2015b
-%define tzdata_version 2015b
-%define tzcode_version 2015b
+Version: 2015c
+%define tzdata_version 2015c
+%define tzcode_version 2015c
 Release: 1%{?dist}
 License: Public Domain
 Group: System Environment/Base
@@ -27,7 +27,10 @@ Summary: Timezone data for Java
 Group: System Environment/Base
 Source3: javazic.tar.gz
 Patch100: javazic-fixup.patch
-Patch101: javazic-exclusion-fix.patch
+Patch101: rebase-01.patch
+Patch102: rebase-02.patch
+Patch103: 7090844.patch
+Patch104: 7133138.patch
 
 %description java
 This package contains timezone information for use by Java runtimes.
@@ -42,6 +45,9 @@ tar zxf %{SOURCE3} -C javazic
 pushd javazic
 %patch100
 %patch101
+%patch102
+%patch103
+%patch104
 
 # Hack alert! sun.tools may be defined and installed in the
 # VM. In order to guarantee that we are using IcedTea/OpenJDK
@@ -96,6 +102,17 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/javazi
 
 %changelog
+* Tue Apr 14 2015 Patsy Franklin <pfrankli@redhat.com> - 2015c-1
+- Rebase to 2015c
+  - Egypt's spring-forward transition is at 24:00 on April's last Thursday,
+    not 00:00 on April's last Friday.  2015's transition will therefore be on
+    Thursday, April 30 at 24:00, not Friday, April 24 at 00:00.  Similar fixes
+    apply to 2026, 2037, 2043, etc.
+
+* Mon Apr 13 2015 Andrew Hughes <gnu.andrew@redhat.com> - 2015b-2
+- Rebase javazic tool to match latest upstream OpenJDK version
+- Resolves: rhbz#1211334
+
 * Sat Mar 21 2015 Patsy Franklin <pfrankli@redhat.com> - 2015b-1
 - Rebase to 2015b
   - Mongolia will start observing DST again this year, from the last
@@ -142,7 +159,7 @@ rm -rf $RPM_BUILD_ROOT
     year-round, modeled as a switch from EST/EDT to AST
     on 2014-11-02 at 02:00.
 
-* Sat Aug 10 2014 Patsy Franklin <pfrankli@redhat.com> - 2014f-1
+* Sun Aug 10 2014 Patsy Franklin <pfrankli@redhat.com> - 2014f-1
 - Rebase to 2014f
   - Several Russian time zones changes effective on 2014-10-26 
     at 02:00 local time.  See NEWS file for additional details.
@@ -154,7 +171,7 @@ rm -rf $RPM_BUILD_ROOT
   - Egypt suspends DTS for Ramadan
        June 26 and July 31 at 24:00
 
-* Thu May 28 2014 Patsy Franklin <pfrankli@redhat.com> - 2014d-1
+* Wed May 28 2014 Patsy Franklin <pfrankli@redhat.com> - 2014d-1
 - Rebase to 2014d
   - zic no longer generates files containing time stamps before
     the Big Bang.  This works around GNOME bug 730332