diff --git a/res/values/strings.xml b/res/values/strings.xml
index 804c926..1716e35 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -155,12 +155,6 @@
     <string name="policy_app_blacklist">Disallow specified apps</string>
     <!-- A policy in which the device allows only specified applications [CHAR LIMIT=50] -->
     <string name="policy_app_whitelist">Allow only specified apps</string>
-    <!-- A policy in which the device allows only calendar items newer than a specified date
-        [CHAR LIMIT=50] -->
-    <string name="policy_max_calendar_age">Restrict calendar event dates</string>
-    <!-- A policy in which the device allows only email items newer than a specified date
-        [CHAR LIMIT=50] -->
-    <string name="policy_max_email_age">Restrict email dates</string>
     <!-- A policy in which the device limits the amount of text that can be displayed for a
         given message [CHAR LIMIT=50] -->
     <string name="policy_text_truncation">Restrict text email size</string>
diff --git a/src/com/android/exchange/adapter/EmailSyncAdapter.java b/src/com/android/exchange/adapter/EmailSyncAdapter.java
index 6c9d585..9552960 100644
--- a/src/com/android/exchange/adapter/EmailSyncAdapter.java
+++ b/src/com/android/exchange/adapter/EmailSyncAdapter.java
@@ -316,6 +316,17 @@
             lookback = SyncWindow.SYNC_WINDOW_1_MONTH;
         }
 
+        // Limit lookback to policy limit
+        if (mAccount.mPolicyKey > 0) {
+            Policy policy = Policy.restorePolicyWithId(mContext, mAccount.mPolicyKey);
+            if (policy != null) {
+                int maxLookback = policy.mMaxEmailLookback;
+                if (maxLookback != 0 && (lookback > policy.mMaxEmailLookback)) {
+                    lookback = policy.mMaxEmailLookback;
+                }
+            }
+        }
+
         // Store the new lookback and persist it
         // TODO Code similar to this is used elsewhere (e.g. MailboxSettings); try to clean this up
         ContentValues cv = new ContentValues();
diff --git a/src/com/android/exchange/adapter/ProvisionParser.java b/src/com/android/exchange/adapter/ProvisionParser.java
index 51d2f8c..a9085bd 100644
--- a/src/com/android/exchange/adapter/ProvisionParser.java
+++ b/src/com/android/exchange/adapter/ProvisionParser.java
@@ -292,15 +292,9 @@
                 case Tags.PROVISION_MAX_CALENDAR_AGE_FILTER:
                     policy.mMaxCalendarLookback = getValueInt();
                     break;
-                // We currently reject max email age filter (unless it's 0, i.e. none specified)
+                // We handle max email lookback
                 case Tags.PROVISION_MAX_EMAIL_AGE_FILTER:
-                    max = getValueInt();
-                    policy.mMaxEmailLookback = max;
-                    // 0 indicates no specified filter
-                    if (max != 0) {
-                        unsupportedList.add(R.string.policy_max_email_age);
-                        tagIsSupported = false;
-                    }
+                    policy.mMaxEmailLookback = getValueInt();
                     break;
                 // We currently reject these next two policies
                 case Tags.PROVISION_MAX_EMAIL_BODY_TRUNCATION_SIZE:
