diff --git a/snf-astakos-app/astakos/im/management/commands/resource-modify.py b/snf-astakos-app/astakos/im/management/commands/resource-modify.py
index 5d506d06b08ffd4021f39d960a82f7eba3c04091..91233a67bc47694b2edd72a11cc2333280b78e10 100644
--- a/snf-astakos-app/astakos/im/management/commands/resource-modify.py
+++ b/snf-astakos-app/astakos/im/management/commands/resource-modify.py
@@ -42,12 +42,15 @@ from ._common import style_options, check_style, units
 
 class Command(BaseCommand):
     args = "<resource name>"
-    help = "Modify a resource's default base quota and boolean flags."
+    help = "Modify a resource's quota defaults and boolean flags."
 
     option_list = BaseCommand.option_list + (
         make_option('--base-default',
                     metavar='<limit>',
-                    help="Specify default base quota"),
+                    help="Specify default quota for base projects"),
+        make_option('--project-default',
+                    metavar='<limit>',
+                    help="Specify default quota for non-base projects"),
         make_option('--unit-style',
                     default='mb',
                     help=("Specify display unit for resource values "
@@ -68,6 +71,7 @@ class Command(BaseCommand):
 
         actions = {
             'base_default': self.change_base_default,
+            'project_default': self.change_project_default,
             'api_visible': self.set_api_visible,
             'ui_visible': self.set_ui_visible,
         }
@@ -116,6 +120,10 @@ class Command(BaseCommand):
         limit = self.parse_limit(limit)
         register.update_base_default(resource, limit)
 
+    def change_project_default(self, resource, limit):
+        limit = self.parse_limit(limit)
+        register.update_project_default(resource, limit)
+
     def parse_limit(self, limit):
         try:
             return units.parse(limit)
diff --git a/snf-astakos-app/astakos/im/register.py b/snf-astakos-app/astakos/im/register.py
index a4ab9138bb4ca6afbf89bbfc089514f57d1698cd..3eed90e7b07f310c6cbe3ef762c066805320d51b 100644
--- a/snf-astakos-app/astakos/im/register.py
+++ b/snf-astakos-app/astakos/im/register.py
@@ -126,6 +126,18 @@ def update_base_default(resource, base_default):
                     % (resource.name, base_default))
 
 
+def update_project_default(resource, project_default):
+    old_project_default = resource.project_default
+    if project_default == old_project_default:
+        logger.info("Resource %s has project default %s; no need to update."
+                    % (resource.name, project_default))
+    else:
+        resource.project_default = project_default
+        resource.save()
+        logger.info("Updated resource %s with project default %s."
+                    % (resource.name, project_default))
+
+
 def resources_to_dict(resources):
     resource_dict = {}
     for r in resources:
diff --git a/snf-deploy/snfdeploy/components.py b/snf-deploy/snfdeploy/components.py
index f96d742b168f7702b50c6b1f99c423906d4995a0..45173776a805f95746246e504ade3955ab88b342 100644
--- a/snf-deploy/snfdeploy/components.py
+++ b/snf-deploy/snfdeploy/components.py
@@ -643,18 +643,28 @@ class Astakos(SynnefoComponent):
             ]
 
     def set_default_quota(self):
-        cmd = "snf-manage resource-modify --base-default"
-        return [
-            "%s 40G pithos.diskspace" % cmd,
-            "%s 2 astakos.pending_app" % cmd,
-            "%s 4 cyclades.vm" % cmd,
-            "%s 40G cyclades.disk" % cmd,
-            "%s 16G cyclades.total_ram" % cmd,
-            "%s 8G cyclades.ram" % cmd,
-            "%s 32 cyclades.total_cpu" % cmd,
-            "%s 16 cyclades.cpu" % cmd,
-            "%s 4 cyclades.network.private" % cmd,
-            "%s 4 cyclades.floating_ip" % cmd,
+        cmd = "snf-manage resource-modify"
+        return [
+            "%s --base-default 40G pithos.diskspace" % cmd,
+            "%s --base-default 2 astakos.pending_app" % cmd,
+            "%s --base-default 4 cyclades.vm" % cmd,
+            "%s --base-default 40G cyclades.disk" % cmd,
+            "%s --base-default 16G cyclades.total_ram" % cmd,
+            "%s --base-default 8G cyclades.ram" % cmd,
+            "%s --base-default 32 cyclades.total_cpu" % cmd,
+            "%s --base-default 16 cyclades.cpu" % cmd,
+            "%s --base-default 4 cyclades.network.private" % cmd,
+            "%s --base-default 4 cyclades.floating_ip" % cmd,
+            "%s --project-default 0 pithos.diskspace" % cmd,
+            "%s --project-default 0 astakos.pending_app" % cmd,
+            "%s --project-default 0 cyclades.vm" % cmd,
+            "%s --project-default 0 cyclades.disk" % cmd,
+            "%s --project-default inf cyclades.total_ram" % cmd,
+            "%s --project-default 0 cyclades.ram" % cmd,
+            "%s --project-default inf cyclades.total_cpu" % cmd,
+            "%s --project-default 0 cyclades.cpu" % cmd,
+            "%s --project-default 0 cyclades.network.private" % cmd,
+            "%s --project-default 0 cyclades.floating_ip" % cmd,
             ]
 
     def modify_all_quota(self):