--- a/joe/uedit.c
+++ b/joe/uedit.c
@@ -87,7 +87,11 @@
  */
 int u_goto_eof(BW *bw)
 {
-	p_goto_eof(bw->cursor);
+	if (bw->b->vt && bw->b->pid) {
+		pset(bw->cursor, bw->b->vt->vtcur);
+	} else {
+		p_goto_eof(bw->cursor);
+	}
 	return 0;
 }
 
@@ -1726,7 +1730,8 @@
 	struct charmap *map=bw->b->o.charmap;
 
 	/* Send data to shell window */
-	if (bw->b->pid && piseof(bw->cursor)) {
+	if (bw->b->pid && !bw->b->vt && piseof(bw->cursor) ||
+	    bw->b->pid && bw->b->vt && bw->cursor->byte == bw->b->vt->vtcur->byte) {
 		unsigned char c = k;
 		joe_write(bw->b->out, &c, 1);
 		return 0;