diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 6150670..975e3f6 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -182,8 +182,8 @@
         }
 
         // There are not NON Starred contacts in cursor
-        // Set divider positon to end and add 1 to make sure it doesn't get drawn
-        return cursor.getCount() + 1;
+        // Set divider positon to end
+        return cursor.getCount();
     }
 
     private ContactEntry createContactEntryFromCursor(Cursor cursor, int position) {
@@ -219,15 +219,19 @@
                 return getRowCount(mContactCursor.getCount());
             case STREQUENT:
             case STREQUENT_PHONE_ONLY:
-                /*
-                 * Takes numbers of rows the Starred Contacts Occupy
-                 * Calculates the number of frequent contacts
-                 * Adds them together and an additional 1 for the divider
-                 */
-                return getRowCount(mDividerPosition) +
-                        mContactCursor.getCount() - mDividerPosition + 1;
+                // Takes numbers of rows the Starred Contacts Occupy
+                int starredRowCount = getRowCount(mDividerPosition);
+
+                // Calculates the number of frequent contacts
+                int frequentRowCount = mContactCursor.getCount() - mDividerPosition ;
+
+                // If there are any frequent contacts add one for the divider
+                frequentRowCount += frequentRowCount == 0 ? 0 : 1;
+
+                // Return the number of starred plus frequent rows
+                return starredRowCount + frequentRowCount;
             case FREQUENT_ONLY:
-                // Number of contacts plus one for the header
+                // Number of frequent contacts plus one for the header
                 return mContactCursor.getCount() + 1;
             default:
                 throw new IllegalArgumentException("Unrecognized DisplayType " + mDisplayType);
@@ -253,7 +257,8 @@
 
         switch (mDisplayType) {
             case FREQUENT_ONLY:
-                resultList.add(createContactEntryFromCursor(mContactCursor, position));
+                // Taking the current position and subtracting one because of the header
+                resultList.add(createContactEntryFromCursor(mContactCursor, position - 1));
                 break;
             case STARRED_ONLY:
             case GROUP_MEMBERS:
