     for _, val of users
         quota.cpu_request += to_int(val?.upgrades?.cpu_shares) / 1024
 
+    # ensure minimums are met
+    if quota.member_host
+        if quota.cpu_request < MIN_POSSIBLE_CPU.member
+            quota.cpu_request = MIN_POSSIBLE_CPU.member
+    else
+        if quota.cpu_request < MIN_POSSIBLE_CPU.nonmember
+            quota.cpu_request = MIN_POSSIBLE_CPU.nonmember
+
+    # ensure minimums are met
+    if quota.member_host
+        if quota.memory_request < MIN_POSSIBLE_MEMORY.member
+            quota.memory_request = MIN_POSSIBLE_MEMORY.member
+    else
+        if quota.memory_request < MIN_POSSIBLE_MEMORY.nonmember
+            quota.memory_request = MIN_POSSIBLE_MEMORY.nonmember
+
     return quota
 
 

misc = require('smc-util/misc')

exports.quota = (settings, users) ->

        network        : false
        member_host    : false
        disk_quota     : 3000
        memory_limit   : 1000        # upper bound on RAM in MB
        memory_request : 0           # will hold guaranteed RAM in MB
        cpu_limit      : 1           # upper bound on vCPU's
        cpu_request    : 0           # will hold guaranteed min number of vCPU's as a float from 0 to infinity.
        privileged     : false       # for elevated docker privileges (FUSE mounting, later more)

    # network access
