diff --git a/src/graph.c b/src/graph.c
index 836661fd..72de4f03 100644
--- a/src/graph.c
+++ b/src/graph.c
@@ -167,7 +167,7 @@ static void sssp_bfs(void) {
 		}
 
 		for splay_each(edge_t, e, n->edge_tree) {       /* "e" is the edge connected to "from" */
-			if(!e->reverse)
+			if(!e->reverse || e->to == myself)
 				continue;
 
 			/* Situation:
@@ -191,7 +191,7 @@ static void sssp_bfs(void) {
 
 			if(e->to->status.visited
 			   && (!e->to->status.indirect || indirect)
-			   && (e->to->prevedge && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)))
+			   && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight))
 				continue;
 
 			// Only update nexthop if it doesn't increase the path length