diff --git a/src/com/android/providers/calendar/CalendarSyncAdapter.java b/src/com/android/providers/calendar/CalendarSyncAdapter.java
index e9137fe..c84a4ff 100644
--- a/src/com/android/providers/calendar/CalendarSyncAdapter.java
+++ b/src/com/android/providers/calendar/CalendarSyncAdapter.java
@@ -546,6 +546,10 @@
      * Clear out the map and stuff an Entry into it in a format that can
      * be inserted into a content provider.
      *
+     * If a date is before 1970 or past 2038, ENTRY_INVALID is returned, and DTSTART
+     * is set to -1.  This is due to the current 32-bit time restriction and
+     * will be fixed in a future release.
+     *
      * @return ENTRY_OK, ENTRY_DELETED, or ENTRY_INVALID
      */
     private int entryToContentValues(EventEntry event, Long syncLocalId,
@@ -741,7 +745,15 @@
                     map.put(Events.EVENT_TIMEZONE, syncInfo.calendarTimezone);
                 }
 
-                map.put(Events.DTSTART, time.toMillis(false /* use isDst */));
+                long dtstart = time.toMillis(false /* use isDst */);
+                if (dtstart < 0) {
+                    if (Config.LOGD) {
+                        Log.d(TAG, "dtstart out of range: " + startTime);
+                    }
+                    map.put(Events.DTSTART, -1);  // Flag to caller that date is out of range
+                    return ENTRY_INVALID;
+                }
+                map.put(Events.DTSTART, dtstart);
 
                 timesSet = true;
             }
@@ -749,7 +761,15 @@
             String endTime = when.getEndTime();
             if (!StringUtils.isEmpty(endTime)) {
                 time.parse3339(endTime);
-                map.put(Events.DTEND, time.toMillis(false /* use isDst */));
+                long dtend = time.toMillis(false /* use isDst */);
+                if (dtend < 0) {
+                    if (Config.LOGD) {
+                        Log.d(TAG, "dtend out of range: " + endTime);
+                    }
+                    map.put(Events.DTSTART, -1);  // Flag to caller that date is out of range
+                    return ENTRY_INVALID;
+                }
+                map.put(Events.DTEND, dtend);
             }
         }
 
