diff --git a/build.properties b/build.properties
index c367949..d4ed433 100644
--- a/build.properties
+++ b/build.properties
@@ -1,9 +1,9 @@
 #*******************************************************************************
-#* Copyright (C) 2009-2013, International Business Machines Corporation and    *
+#* Copyright (C) 2009-2015, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
 #*******************************************************************************
 api.report.version = 52
 api.report.prev.version = 51
-release.file.ver = 52_1
-api.doc.version = 52.1
+release.file.ver = 52_1_1
+api.doc.version = 52.1.1
 
diff --git a/eclipse-build/build.properties b/eclipse-build/build.properties
index e5f3124..0f20fbf 100644
--- a/eclipse-build/build.properties
+++ b/eclipse-build/build.properties
@@ -1,9 +1,9 @@
 #*******************************************************************************
-#* Copyright (C) 2010-2014, International Business Machines Corporation and    *
+#* Copyright (C) 2010-2015, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
 #*******************************************************************************
 icu4j.plugin.impl.version.string=52.1.0
 copyright.eclipse=Licensed Materials - Property of IBM \n (C) Copyright IBM Corp. 2000, 2014. All Rights Reserved. \n IBM is a registered trademark of IBM Corp.
 icu4j.data.version.number=52
-icu4j.eclipse.build.version.string=52.1.0.v20140218
+icu4j.eclipse.build.version.string=52.1.1.v20150113
 
diff --git a/eclipse-build/misc/about_icu.html b/eclipse-build/misc/about_icu.html
index 39454e0..9d9c8e0 100644
--- a/eclipse-build/misc/about_icu.html
+++ b/eclipse-build/misc/about_icu.html
@@ -8,7 +8,7 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>February 18, 2014</p>	
+<p>January 13, 2015</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
@@ -31,13 +31,13 @@
 		for informational purposes only, and you should look to the Redistributor's license for 
 		terms and conditions of use.</p>
 
-		<p><strong>ICU4J 52.1.0.v20140218 plug-in</strong> <br/><br/>
+		<p><strong>ICU4J 52.1.1.v20150113 plug-in</strong> <br/><br/>
 		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
 		Corporation and others.
 		<br/><br/>
 		ICU4J is:
 		<blockquote>
-		Copyright (c) 1995-2014 International Business Machines Corporation and others<br/>
+		Copyright (c) 1995-2015 International Business Machines Corporation and others<br/>
 		All rights reserved. 
 		</blockquote>
 		<p>
diff --git a/eclipse-build/misc/about_icu_base.html b/eclipse-build/misc/about_icu_base.html
index dc7da4c..8c14919 100644
--- a/eclipse-build/misc/about_icu_base.html
+++ b/eclipse-build/misc/about_icu_base.html
@@ -8,7 +8,7 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>February 18, 2014</p>
+<p>January 13, 2015</p>
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
@@ -31,13 +31,13 @@
 		for informational purposes only, and you should look to the Redistributor's license for 
 		terms and conditions of use.</p>
 
-		<p><strong>ICU4J 52.1.0.v20140218 base plug-in</strong> <br/><br/>
+		<p><strong>ICU4J 52.1.1.v20150113 base plug-in</strong> <br/><br/>
 		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
 		Corporation and others.
 		<br/><br/>
 		ICU4J is:
 		<blockquote>
-		Copyright (c) 1995-2014 International Business Machines Corporation and others<br/>
+		Copyright (c) 1995-2015 International Business Machines Corporation and others<br/>
 		All rights reserved. 
 		</blockquote>
 		<p>
diff --git a/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
index 631b8ef..0abcda7 100644
--- a/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
+++ b/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
@@ -1,6 +1,6 @@
 /*
  *******************************************************************************
- * Copyright (C) 1996-2013, International Business Machines Corporation and
+ * Copyright (C) 1996-2015, International Business Machines Corporation and
  * others. All Rights Reserved.
  *******************************************************************************
  */
@@ -513,7 +513,7 @@
         UNICODE_6_2   = getInstance(6, 2, 0, 0);
         UNICODE_6_3   = getInstance(6, 3, 0, 0);
 
-        ICU_VERSION   = getInstance(52, 1, 0, 0);
+        ICU_VERSION   = getInstance(52, 1, 1, 0);
         ICU_DATA_VERSION = getInstance(52, 1, 0, 0);
         UNICODE_VERSION = UNICODE_6_3;
 
diff --git a/main/shared/build/common.properties b/main/shared/build/common.properties
index 9c252e7..5934944 100644
--- a/main/shared/build/common.properties
+++ b/main/shared/build/common.properties
@@ -1,11 +1,11 @@
 #*******************************************************************************
-#* Copyright (C) 2009-2013, International Business Machines Corporation and    *
+#* Copyright (C) 2009-2015, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
 #*******************************************************************************
 
 # Version numbers, etc.
 icu4j.spec.version = 52
-icu4j.impl.version = 52.1
+icu4j.impl.version = 52.1.1
 icu4j.data.version = 52
 current.year = 2013
 default.exec.env = J2SE-1.5
diff --git a/main/shared/data/security.policy b/main/shared/data/security.policy
index 74c20e7..415b85d 100644
--- a/main/shared/data/security.policy
+++ b/main/shared/data/security.policy
@@ -1,6 +1,6 @@
 //#
 //#*******************************************************************************
-//#* Copyright (C) 1997-2011, International Business Machines Corporation and    *
+//#* Copyright (C) 1997-2015, International Business Machines Corporation and    *
 //#* others. All Rights Reserved.                                                *
 //#*******************************************************************************
 //#* This is the ant build file for ICU4J.  See readme.html for more information.
@@ -25,6 +25,9 @@
 
     // for testing lenient decimal/group separator parsing
     permission java.util.PropertyPermission "com.ibm.icu.text.DecimalFormat.SkipExtendedSeparatorParsing", "write";
+
+    // for setting the default time zone by the test framework
+    permission java.util.PropertyPermission "user.timezone", "write";
 };
 
 // there must be a way for code in one jar file to call code in another jar
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
index fb8f589..95379d2 100644
--- a/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
+++ b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -1,6 +1,6 @@
 /**
  *******************************************************************************
- * Copyright (C) 2000-2013, International Business Machines Corporation and    *
+ * Copyright (C) 2000-2015, International Business Machines Corporation and    *
  * others. All Rights Reserved.                                                *
  *******************************************************************************
  */
@@ -1064,6 +1064,7 @@
      * Test setRawOffset works OK with system timezone
      */
     public void TestT5280() {
+        boolean isJdkZone = (TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_JDK);
         String[] tzids = TimeZone.getAvailableIDs();
         for (int i = 0; i < tzids.length; i++) {
             TimeZone tz = TimeZone.getTimeZone(tzids[i]);
@@ -1078,7 +1079,13 @@
             }
             int offset = tz.getRawOffset();
             if (offset != newRawOffset) {
-                errln("FAIL: Modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+                if (isJdkZone) {
+                    // JDK TimeZone#setRawOffset() only update the last rule, and getRawOffset() returns
+                    // the current raw offset. Therefore, they might be different.
+                    logln("Modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+                } else {
+                    errln("FAIL: Modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+                }
             }
             // Ticket#5917
             // Check if DST observation status is not unexpectedly changed.
@@ -1088,9 +1095,17 @@
             }
             // Make sure the offset is preserved in a clone
             TimeZone tzClone = (TimeZone)tz.clone();
-            offset = tzClone.getRawOffset();
-            if (offset != newRawOffset) {
-                errln("FAIL: Cloned modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+            int offsetC = tzClone.getRawOffset();
+            if (offsetC != newRawOffset) {
+                if (isJdkZone) {
+                    logln("Cloned modified zone(" + tz.getID() + ") - getRawOffset returns " + offsetC + "/ Expected: " + newRawOffset);
+                } else {
+                    errln("FAIL: Cloned modified zone(" + tz.getID() + ") - getRawOffset returns " + offsetC + "/ Expected: " + newRawOffset);
+                }
+            }
+
+            if (offset != offsetC) {
+                errln("FAIL: Different raw offset - Original:" + offset + ", Cloned:" + offsetC);
             }
         }
     }
diff --git a/pom.xml b/pom.xml
index f7c681e..9ef38cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!--
 *******************************************************************************
-* Copyright (C) 2010-2013, International Business Machines Corporation and    *
+* Copyright (C) 2010-2015, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 -->
@@ -11,7 +11,7 @@
 
   <groupId>com.ibm.icu</groupId>
   <artifactId>icu4j</artifactId>
-  <version>52.1</version>
+  <version>52.1.1</version>
 
   <name>ICU4J</name>
   <description>
diff --git a/readme.html b/readme.html
index c4e6705..035afed 100644
--- a/readme.html
+++ b/readme.html
@@ -5,7 +5,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta http-equiv="Content-Style-Type" content="text/css2">
   <title>ReadMe for ICU4J</title>
-  <meta name="COPYRIGHT" content="Copyright 2000-2014, International Business Machines Corporation and others. All Rights Reserved.">
+  <meta name="COPYRIGHT" content="Copyright 2000-2015, International Business Machines Corporation and others. All Rights Reserved.">
   <style type="text/css">
 h3.doc { background: #CCCCFF }
 h4.doc { text-decoration: underline }
@@ -14,12 +14,15 @@
 <body style="background-color: rgb(255, 255, 255);" lang="EN-US"
  link="#0000ff" vlink="#800080">
 <h2>International Components for Unicode for Java (ICU4J)</h2>
-<h3>Read Me for ICU4J 52</h3>
-(Last Update: 2014-Feb-18)
+<h3>Read Me for ICU4J 52.1.1</h3>
+(Last Update: 2015-Jan-13)
 <hr size="2" width="100%">
 
-<p><b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations
-of inherited API and introduces new API or functionality.
+<p>
+<b>Note:</b> This is an update release of ICU4J 52.
+This release contains bug fixes and updated data, but does not introduce any new APIs for functionalities.
+<!-- <b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations
+of inherited API and introduces new API or functionality. -->
 </p>
 <p>For the most recent release, see the <a
  href="http://www.icu-project.org/download/"> ICU4J
@@ -130,6 +133,10 @@
 The list of API changes since the previous ICU4J release is available
 <a href="http://source.icu-project.org/repos/icu/icu4j/tags/release-52-1/APIChangeReport.html">here</a>.</p>
 
+<h4 class="doc">Updates in 52.1.1 (January 13, 2015)</h4>
+<p>See the <a href="http://bugs.icu-project.org/trac/ticket/10568">ICU4J 52.1.1 Release Ticket</a> about
+fixes done in this update release.
+
 <h3 class="doc"><a name="license"></a>License Information</h3>
 <p>
 The ICU projects (ICU4C and ICU4J) use the X license. The X
@@ -992,7 +999,7 @@
 </ol>
 
 <h3 class="doc"><a name="timezone"></a>About ICU4J Time Zone</h3>
-<p>ICU4J 52.1 includes time zone data version 2013i, which is the latest one as of
+<p>ICU4J 52.1.1 includes time zone data version 2014j, which is the latest one as of
 the release date. However, time zone data is frequently updated in response
 to changes made by local governments around the world.  If you need to update
 the time zone data, please refer the ICU user guide topic
@@ -1030,7 +1037,7 @@
 <h2>Thank you for your interest in ICU4J!</h2>
 <br>
 <hr align="center" size="2" width="100%">
-<p><I><font size="-1">Copyright &copy; 2002-2013 International Business
+<p><I><font size="-1">Copyright &copy; 2002-2015 International Business
 Machines Corporation and others. All Rights
 Reserved.<br>
 4400 North First Street, San Jos&eacute;, CA 95193, USA
