diff --git a/src/com/android/packageinstaller/wear/WearPackageArgs.java b/src/com/android/packageinstaller/wear/WearPackageArgs.java
index da49192..2c289b2 100644
--- a/src/com/android/packageinstaller/wear/WearPackageArgs.java
+++ b/src/com/android/packageinstaller/wear/WearPackageArgs.java
@@ -45,6 +45,8 @@
             "com.google.android.clockwork.EXTRA_KEY_COMPANION_DEVICE_VERSION";
     private static final String KEY_SHOULD_CHECK_GMS_DEPENDENCY =
             "com.google.android.clockwork.EXTRA_KEY_SHOULD_CHECK_GMS_DEPENDENCY";
+    private static final String KEY_SKIP_IF_LOWER_VERSION =
+            "com.google.android.clockwork.EXTRA_SKIP_IF_LOWER_VERSION";
 
     public static String getPackageName(Bundle b) {
         return b.getString(KEY_PACKAGE_NAME);
@@ -87,6 +89,10 @@
         return b.getInt(KEY_START_ID);
     }
 
+    public static boolean skipIfLowerVersion(Bundle b) {
+        return b.getBoolean(KEY_SKIP_IF_LOWER_VERSION, false);
+    }
+
     public static Bundle setStartId(Bundle b, int startId) {
         b.putInt(KEY_START_ID, startId);
         return b;
diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
index 22e8fc6..2d4744c 100644
--- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
+++ b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
@@ -195,13 +195,15 @@
         int companionSdkVersion = WearPackageArgs.getCompanionSdkVersion(argsBundle);
         int companionDeviceVersion = WearPackageArgs.getCompanionDeviceVersion(argsBundle);
         String compressionAlg = WearPackageArgs.getCompressionAlg(argsBundle);
+        boolean skipIfLowerVersion = WearPackageArgs.skipIfLowerVersion(argsBundle);
 
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "Installing package: " + packageName + ", assetUri: " + assetUri +
                     ",permUri: " + permUri + ", startId: " + startId + ", checkPerms: " +
                     checkPerms + ", skipIfSameVersion: " + skipIfSameVersion +
                     ", compressionAlg: " + compressionAlg + ", companionSdkVersion: " +
-                    companionSdkVersion + ", companionDeviceVersion: " + companionDeviceVersion);
+                    companionSdkVersion + ", companionDeviceVersion: " + companionDeviceVersion +
+                    ", skipIfLowerVersion: " + skipIfLowerVersion);
         }
         final PackageManager pm = getPackageManager();
         File tempFile = null;
@@ -266,9 +268,17 @@
                                 ") is equal to existing app for " + packageName);
                     }
                 } else if (existingPkgInfo.versionCode > pkg.mVersionCode) {
-                    Log.w(TAG, "Version number of new app (" + pkg.mVersionCode +
-                            ") is lower than existing app ( " + existingPkgInfo.versionCode +
-                            ") for " + packageName);
+                    if (skipIfLowerVersion) {
+                        // Starting in Feldspar, we are not going to allow downgrades of any app.
+                        Log.w(TAG, "Version number of new app (" + pkg.mVersionCode +
+                                ") is lower than existing app ( " + existingPkgInfo.versionCode +
+                                ") for " + packageName + "; not installing due to versionCheck");
+                        return;
+                    } else {
+                        Log.w(TAG, "Version number of new app (" + pkg.mVersionCode +
+                                ") is lower than existing app ( " + existingPkgInfo.versionCode +
+                                ") for " + packageName);
+                    }
                 }
 
                 // Following the Android Phone model, we should only check for permissions for any
