anchor.diff:        }
       ) (attrNames distribution))
     ;
  +  
  +  mapStatefulToPrevious = {services, distribution, previousDistribution}:
  +    listToAttrs (map (serviceName:
  +      { name = serviceName;
  +        value =
  +          let
  +            service = getAttr serviceName services;
  +	    targets = getAttr serviceName distribution;
  +	    previousTargets = if hasAttr serviceName previousDistribution then getAttr serviceName previousDistribution
  +	                      else targets;
  +          in
  +          if service ? stateful && service.stateful then
  +	    filter (targetName: elem targetName previousTargets) targets
  +	  else targets;
  +      }
  +    ) (attrNames distribution))
  +  ;
   }
  
positive.code:     ) (attrNames services))
    ;
    
    filterDistributionMapAttributeOnList = {distribution, services, infrastructure, serviceProperty, targetPropertyList}:
      listToAttrs (map (serviceName:
        { name = serviceName;
          value = 
  
negative.code:     ) (attrNames distribution))
    ;
    
    mapAttrOnAttr = {distribution, services, infrastructure, serviceProperty, targetProperty}:
      listToAttrs (map (serviceName:
        { name = serviceName;
          value =
  