diff --git a/_states/maasng.py b/_states/maasng.py
index 22c68fc..7bfdcd8 100644
--- a/_states/maasng.py
+++ b/_states/maasng.py
@@ -56,10 +56,13 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution failed for machine {0}".format(
-            hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution failed for machine {0}".format(hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
@@ -108,10 +111,14 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution failed for machine {0}".format(
-            hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution failed for machine {0}".format(
+                hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
@@ -166,10 +173,14 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution failed for machine {0}".format(
-            hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution failed for machine {0}".format(
+                hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
@@ -242,10 +253,14 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution" \
-                         "failed for machine {0}".format(hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution" \
+                             "failed for machine {0}".format(hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
@@ -289,10 +304,14 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution failed for machine {0}".format(
-            hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution failed for machine {0}".format(
+                hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
@@ -327,10 +346,14 @@
 
     machine = __salt__['maasng.get_machine'](hostname)
     if "error" in machine:
-        ret['comment'] = "State execution" \
-                         "failed for machine {0}".format(hostname)
-        ret['result'] = False
-        ret['changes'] = machine
+        if 0 in machine["error"]:
+            ret['comment'] = "No such machine {0}".format(hostname)
+            ret['changes'] = machine
+        else:
+            ret['comment'] = "State execution" \
+                             "failed for machine {0}".format(hostname)
+            ret['result'] = False
+            ret['changes'] = machine
         return ret
 
     if machine["status_name"] != "Ready":
