diff --git a/src/com/android/exchange/adapter/CalendarSyncAdapter.java b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
index 3eab4fb..30549da 100644
--- a/src/com/android/exchange/adapter/CalendarSyncAdapter.java
+++ b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
@@ -97,8 +97,6 @@
     private static final String CATEGORY_TOKENIZER_DELIMITER = "\\";
     private static final String ATTENDEE_TOKENIZER_DELIMITER = CATEGORY_TOKENIZER_DELIMITER;
 
-    private static final String FREE_BUSY_BUSY = "2";
-
     private static final ContentProviderOperation PLACEHOLDER_OPERATION =
         ContentProviderOperation.newInsert(Uri.EMPTY).build();
 
@@ -411,7 +409,9 @@
                         ops.newExtendedProperty("meeting_status", getValue());
                         break;
                     case Tags.CALENDAR_BUSY_STATUS:
-                        ops.newExtendedProperty("busy_status", getValue());
+                        int busyStatus = getValueInt();
+                        cv.put(Events.SELF_ATTENDEE_STATUS,
+                                CalendarUtilities.selfAttendeeStatusFromBusyStatus(busyStatus));
                         break;
                     case Tags.CALENDAR_CATEGORIES:
                         String categories = categoriesParser(ops);
@@ -618,21 +618,19 @@
                     case Tags.CALENDAR_SENSITIVITY:
                         cv.put(Events.VISIBILITY, encodeVisibility(getValueInt()));
                         break;
+                    case Tags.CALENDAR_BUSY_STATUS:
+                        int busyStatus = getValueInt();
+                        cv.put(Events.SELF_ATTENDEE_STATUS,
+                                CalendarUtilities.selfAttendeeStatusFromBusyStatus(busyStatus));
+                        break;
 
                         // TODO How to handle these items that are linked to event id!
-
 //                    case Tags.CALENDAR_DTSTAMP:
 //                        ops.newExtendedProperty("dtstamp", getValue());
 //                        break;
-//                    case Tags.CALENDAR_BUSY_STATUS:
-//                        // TODO Try to fit this into Calendar scheme
-//                        ops.newExtendedProperty("busy_status", getValue());
-//                        break;
 //                    case Tags.CALENDAR_REMINDER_MINS_BEFORE:
 //                        ops.newReminder(getValueInt());
 //                        break;
-
-                        // Not yet handled
                     default:
                         skipTag();
                 }
@@ -1173,7 +1171,10 @@
 
         // Busy status is only required for 2.5, but we need to send it with later
         // versions as well, because if we don't, the server will clear it.
-        s.data(Tags.CALENDAR_BUSY_STATUS, FREE_BUSY_BUSY);
+        int selfAttendeeStatus = entityValues.getAsInteger(Events.SELF_ATTENDEE_STATUS);
+        s.data(Tags.CALENDAR_BUSY_STATUS,
+                Integer.toString(CalendarUtilities
+                        .busyStatusFromSelfAttendeeStatus(selfAttendeeStatus)));
 
         boolean allDay = false;
         if (entityValues.containsKey(Events.ALL_DAY)) {
diff --git a/src/com/android/exchange/utility/CalendarUtilities.java b/src/com/android/exchange/utility/CalendarUtilities.java
index 35e42e1..263b136 100644
--- a/src/com/android/exchange/utility/CalendarUtilities.java
+++ b/src/com/android/exchange/utility/CalendarUtilities.java
@@ -137,6 +137,11 @@
     static final String ICALENDAR_ATTENDEE_TENTATIVE =
         ICALENDAR_ATTENDEE + ";PARTSTAT=TENTATIVE";
 
+    public static final int BUSY_STATUS_BUSY = 0;
+    public static final int BUSY_STATUS_FREE = 1;
+    public static final int BUSY_STATUS_TENTATIVE = 2;
+    public static final int BUSY_STATUS_OOF = 3;
+
     // Return a 4-byte long from a byte array (little endian)
     static int getLong(byte[] bytes, int offset) {
         return (bytes[offset++] & 0xFF) | ((bytes[offset++] & 0xFF) << 8) |
@@ -1210,6 +1215,55 @@
         }
     }
 
+    /**
+     * Get a selfAttendeeStatus from a busy status
+     * The default here is NONE (i.e. we don't know the status)
+     * Note that a busy status of FREE must mean NONE as well, since it can't mean declined
+     * (there would be no event)
+     * @param busyStatus the busy status, from EAS
+     * @return the corresponding value for selfAttendeeStatus
+     */
+    static public int selfAttendeeStatusFromBusyStatus(int busyStatus) {
+        int selfAttendeeStatus;
+        switch (busyStatus) {
+            case BUSY_STATUS_BUSY:
+                selfAttendeeStatus = Attendees.ATTENDEE_STATUS_ACCEPTED;
+                break;
+            case BUSY_STATUS_TENTATIVE:
+                selfAttendeeStatus = Attendees.ATTENDEE_STATUS_TENTATIVE;
+                break;
+            case BUSY_STATUS_FREE:
+            case BUSY_STATUS_OOF:
+            default:
+                selfAttendeeStatus = Attendees.ATTENDEE_STATUS_NONE;
+        }
+        return selfAttendeeStatus;
+    }
+
+    /** Get a busy status from a selfAttendeeStatus
+     * The default here is BUSY
+     * @param selfAttendeeStatus from CalendarProvider2
+     * @return the corresponding value of busy status
+     */
+    static public int busyStatusFromSelfAttendeeStatus(int selfAttendeeStatus) {
+        int busyStatus;
+        switch (selfAttendeeStatus) {
+            case Attendees.ATTENDEE_STATUS_DECLINED:
+            case Attendees.ATTENDEE_STATUS_NONE:
+            case Attendees.ATTENDEE_STATUS_INVITED:
+                busyStatus = BUSY_STATUS_FREE;
+                break;
+            case Attendees.ATTENDEE_STATUS_TENTATIVE:
+                busyStatus = BUSY_STATUS_TENTATIVE;
+                break;
+            case Attendees.ATTENDEE_STATUS_ACCEPTED:
+            default:
+                busyStatus = BUSY_STATUS_BUSY;
+                break;
+        }
+        return busyStatus;
+    }
+
     static public String buildMessageTextFromEntityValues(Context context,
             ContentValues entityValues, StringBuilder sb) {
         if (sb == null) {
diff --git a/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java b/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
index 20916e7..c99fa4b 100644
--- a/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
+++ b/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
@@ -714,6 +714,39 @@
         assertEquals(uid, "040000008200E00074C5B7101A82E00800000000C0093BBB29B3CA" +
                 "01000000000000000010000000E6E0B06E8756DD459B2FBB1A52DB1A16");
     }
+
+    public void testSelfAttendeeStatusFromBusyStatus() {
+        assertEquals(Attendees.ATTENDEE_STATUS_ACCEPTED,
+                CalendarUtilities.selfAttendeeStatusFromBusyStatus(
+                        CalendarUtilities.BUSY_STATUS_BUSY));
+        assertEquals(Attendees.ATTENDEE_STATUS_TENTATIVE,
+                CalendarUtilities.selfAttendeeStatusFromBusyStatus(
+                        CalendarUtilities.BUSY_STATUS_TENTATIVE));
+        assertEquals(Attendees.ATTENDEE_STATUS_NONE,
+                CalendarUtilities.selfAttendeeStatusFromBusyStatus(
+                        CalendarUtilities.BUSY_STATUS_FREE));
+        assertEquals(Attendees.ATTENDEE_STATUS_NONE,
+                CalendarUtilities.selfAttendeeStatusFromBusyStatus(
+                        CalendarUtilities.BUSY_STATUS_OOF));
+    }
+
+    public void testBusyStatusFromSelfStatus() {
+        assertEquals(CalendarUtilities.BUSY_STATUS_FREE,
+                CalendarUtilities.busyStatusFromSelfAttendeeStatus(
+                        Attendees.ATTENDEE_STATUS_DECLINED));
+        assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
+                CalendarUtilities.busyStatusFromSelfAttendeeStatus(
+                        Attendees.ATTENDEE_STATUS_NONE));
+        assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
+                CalendarUtilities.busyStatusFromSelfAttendeeStatus(
+                        Attendees.ATTENDEE_STATUS_INVITED));
+        assertEquals(CalendarUtilities.BUSY_STATUS_TENTATIVE,
+                CalendarUtilities.busyStatusFromSelfAttendeeStatus(
+                        Attendees.ATTENDEE_STATUS_TENTATIVE));
+        assertEquals(CalendarUtilities.BUSY_STATUS_BUSY,
+                CalendarUtilities.busyStatusFromSelfAttendeeStatus(
+                        Attendees.ATTENDEE_STATUS_ACCEPTED));
+    }
 }
 
     // TODO Planned unit tests
