diff --git a/htools/Ganeti/HTools/Loader.hs b/htools/Ganeti/HTools/Loader.hs
index 427287043cc7719ceb2db42bb261c16b32fe30a1..9c6badf39bd86368ea43507fa1f196dcd858b9b9 100644
--- a/htools/Ganeti/HTools/Loader.hs
+++ b/htools/Ganeti/HTools/Loader.hs
@@ -156,10 +156,14 @@ filterExTags tl inst =
     in inst { Instance.tags = new_tags }
 
 -- | Update the movable attribute
-updateMovable :: [String] -> Instance.Instance -> Instance.Instance
-updateMovable exinst inst =
+updateMovable :: [String]           -- ^ Selected instances (if not empty)
+              -> [String]           -- ^ Excluded instances
+              -> Instance.Instance  -- ^ Target Instance
+              -> Instance.Instance  -- ^ Target Instance with updated attribute
+updateMovable selinsts exinsts inst =
     if Instance.sNode inst == Node.noSecondary ||
-       Instance.name inst `elem` exinst
+       Instance.name inst `elem` exinsts ||
+       not (null selinsts || Instance.name inst `elem` selinsts)
     then Instance.setMovable inst False
     else inst
 
@@ -205,7 +209,7 @@ mergeData um extags selinsts exinsts cdata@(ClusterData _ nl il2 tags) =
                    ) il2 um
       allextags = extags ++ extractExTags tags
       il4 = Container.map (filterExTags allextags .
-                           updateMovable exinsts) il3
+                           updateMovable selinsts exinsts) il3
       nl2 = foldl' fixNodes nl (Container.elems il4)
       nl3 = Container.map (flip Node.buildPeers il4) nl2
       node_names = map Node.name (Container.elems nl)