Index: do_labels.c
===================================================================
--- do_labels.c	(revision 32823)
+++ do_labels.c	(working copy)
@@ -15,6 +15,7 @@
 #define TOP	0
 #define CENT	1
 #define BOT	2
+#define NONE	3
 #define LEFT	0
 #define RITE	2
 #define YES	1
@@ -232,8 +233,12 @@
 
 	G_debug(3, "line %d ='%s'", n_lines, line);
 
-	Y = (int)(D_u_to_d_row
-		  (north - (line_size * 1.2) - ((n_lines - 1) * line_size)));
+	if (yref == NONE)
+	    Y = D_u_to_d_row(north);
+	else
+	    Y = (int)(D_u_to_d_row
+		      (north - (line_size * 1.2) - ((n_lines - 1) * 
+						    line_size)));
 	R_move_abs(X, Y);
 	R_text_rotation(0.0);	/* reset */
 	R_get_text_box(line, &t, &b, &l, &r);
@@ -366,8 +371,11 @@
 	    *lptr = '\0';
 
 	    /* figure out text placement */
-	    Y = (int)(D_u_to_d_row
-		      (north - (line_size * 1.2) - ((i - 1) * line_size)));
+	    if (yref == NONE)
+		Y = D_u_to_d_row(north);
+	    else
+		Y = (int)(D_u_to_d_row
+			  (north - (line_size * 1.2) - ((i - 1) * line_size)));
 	    text_x = X + X_just_offset;	/* reset after G_rotate_around_point_int() */
 	    text_y = Y + Y_just_offset;
 	    G_rotate_around_point_int(X, Y0, &text_x, &text_y, -1 * rotation);
@@ -480,6 +488,8 @@
 	xref = LEFT;
     else if (strcmp(word, "right") == 0)
 	xref = RITE;
+    else if (strcmp (word, "none") == 0)
+	xref = LEFT;
     else
 	return 0;
     xok = 1;
@@ -503,6 +513,8 @@
 	yref = BOT;
     else if (strcmp(word, "bottom") == 0)
 	yref = BOT;
+    else if (strcmp (word, "none") == 0)
+	yref = NONE;
     else
 	return 0;
     yok = 1;

