I find the maze looks better if you alter the print () routine: ... if( leftwall(cell) ) ch = '|'; else { ch='_'; if( !botwall(cell) && !botwall(neighbor(cell, LEFT)) ) ch='.'; } putchar(ch); (Actually my version uses neighbour instead of neighbor throughout) This alteration only prints full stops not next to underlines. (I hope this has SOME approval :-)