We explore the control of a nonholonomic robot subject to additional constraints on the state variables. In our problem, the user specifies the path of a subset of the state variables (the task freedoms x_P), i.e. a curve x_P(s) where s[0,1] is a parametrization that the user chooses. We control the trajectory of the task freedoms by specifying a bilateral time-scaling s(t) which assigns a point on the path for each t[0,T], where T is the time to completion of the path. The time-scaling is termed bilateral because there is no restriction on \dot{s}(t), the task freedoms are allowed to move backwards along the path. We design a controller that satisfies the user directive and controls the remaining state variables (the shape freedoms x_R) such that the constraints are satisfied. Furthermore, we attempt to reduce the number of control switchings, as these result in relatively large errors in our system state. If a constraint is close to being violated (at a switching point), we back up x_P along the path for a small time interval and move x_R to an open region. We show that there are a finite number of switching points for arbitrary task freedom paths. We implement our control scheme on the Mobipulator and discuss a generalization to arbitrary systems satisfying similar properties.