diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 7cd4318..1387b25 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -75,7 +75,7 @@
     <string name="approximate" msgid="7117143366610670836">"(±১ শেষের ডিজিটের মধ্যে)"</string>
     <string name="menu_leading" msgid="2338520833272667740">"লিডিং সংখ্যায় উত্তর"</string>
     <string name="menu_fraction" msgid="1247477377840252234">"ভগ্নাংশ হিসাবে উত্তর"</string>
-    <string name="menu_licenses" msgid="1890541368064108592">"মুক্ত উৎস লাইসেন্সগুলি"</string>
+    <string name="menu_licenses" msgid="1890541368064108592">"ওপেন সোর্স লাইসেন্স"</string>
     <string name="menu_history" msgid="9006222701220105452">"ইতিহাস"</string>
     <string name="menu_clear_history" msgid="2336526604226069572">"সাফ করুন"</string>
     <string name="title_history" msgid="7820912156315181539">"ইতিহাস"</string>
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 392447c..81ab1f6 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -535,9 +535,6 @@
     }
 
     public boolean isResultLayout() {
-        if (mCurrentState == CalculatorState.ANIMATE) {
-            throw new AssertionError("impossible state");
-        }
         // Note that ERROR has INPUT, not RESULT layout.
         return mCurrentState == CalculatorState.INIT_FOR_RESULT
                 || mCurrentState == CalculatorState.RESULT;
@@ -1339,7 +1336,14 @@
      */
     private boolean prepareForHistory() {
         if (mCurrentState == CalculatorState.ANIMATE) {
-            throw new AssertionError("onUserInteraction should have ended animation");
+            // End the current animation and signal that preparation has failed.
+            // onUserInteraction is unreliable and onAnimationEnd() is asynchronous, so we
+            // aren't guaranteed to be out of the ANIMATE state by the time prepareForHistory is
+            // called.
+            if (mCurrentAnimator != null) {
+                mCurrentAnimator.end();
+            }
+            return false;
         } else if (mCurrentState == CalculatorState.EVALUATE) {
             // Cancel current evaluation
             cancelIfEvaluating(true /* quiet */ );
@@ -1366,12 +1370,15 @@
     }
 
     private void showHistoryFragment() {
-        final FragmentManager manager = getFragmentManager();
-        if (manager == null || manager.isDestroyed()) {
+        if (getHistoryFragment() != null) {
+            // If the fragment already exists, do nothing.
             return;
         }
 
-        if (getHistoryFragment() != null || !prepareForHistory()) {
+        final FragmentManager manager = getFragmentManager();
+        if (manager == null || manager.isDestroyed() || !prepareForHistory()) {
+            // If the history fragment can not be shown, close the draglayout.
+            mDragLayout.setClosed();
             return;
         }
 
diff --git a/src/com/android/calculator2/DragLayout.java b/src/com/android/calculator2/DragLayout.java
index e34c4da..74b0a8e 100644
--- a/src/com/android/calculator2/DragLayout.java
+++ b/src/com/android/calculator2/DragLayout.java
@@ -209,14 +209,11 @@
         return mIsOpen;
     }
 
-    private void setClosed() {
-        if (mIsOpen) {
-            mIsOpen = false;
-            mHistoryFrame.setVisibility(View.INVISIBLE);
-
-            if (mCloseCallback != null) {
-                mCloseCallback.onClose();
-            }
+    public void setClosed() {
+        mIsOpen = false;
+        mHistoryFrame.setVisibility(View.INVISIBLE);
+        if (mCloseCallback != null) {
+            mCloseCallback.onClose();
         }
     }
 
@@ -350,7 +347,9 @@
                 settleToOpen = releasedChild.getTop() > -(mVerticalRange / 2);
             }
 
-            if (mDragHelper.settleCapturedViewAt(0, settleToOpen ? 0 : -mVerticalRange)) {
+            // If the view is not visible, then settle it closed, not open.
+            if (mDragHelper.settleCapturedViewAt(0, settleToOpen && mIsOpen ? 0
+                    : -mVerticalRange)) {
                 ViewCompat.postInvalidateOnAnimation(DragLayout.this);
             }
         }
