--- /dev/null
+diff -up cups-1.4.5/filter/pstops.c.page-label cups-1.4.5/filter/pstops.c
+--- cups-1.4.5/filter/pstops.c.page-label 2010-08-31 20:36:08.000000000 +0200
++++ cups-1.4.5/filter/pstops.c 2010-11-12 13:11:11.000000000 +0100
+@@ -108,6 +108,7 @@ typedef struct /**** Document informa
+ int num_options; /* Number of document-wide options */
+ cups_option_t *options; /* Document-wide options */
+ int normal_landscape, /* Normal rotation for landscape? */
++ orientation, /* Original orientation of the document */
+ saw_eof, /* Saw the %%EOF comment? */
+ slow_collate, /* Collate copies by hand? */
+ slow_duplex, /* Duplex pages slowly? */
+@@ -2083,7 +2084,7 @@ do_setup(pstops_doc_t *doc, /* I - Docu
+ * of the pages...
+ */
+
+- if (Orientation & 1)
++ if (doc->orientation & 1)
+ write_label_prolog(doc, doc->page_label, PageBottom,
+ PageWidth - PageLength + PageTop, PageLength);
+ else
+@@ -2091,7 +2092,30 @@ do_setup(pstops_doc_t *doc, /* I - Docu
+ PageLength);
+ }
+ else
+- write_label_prolog(doc, doc->page_label, PageBottom, PageTop, PageWidth);
++ {
++ switch (doc->orientation)
++ {
++ case 0 :
++ write_label_prolog(doc, doc->page_label, PageBottom, PageTop,
++ PageWidth);
++ break;
++
++ case 1 :
++ write_label_prolog(doc, doc->page_label, PageLeft, PageRight,
++ PageLength);
++ break;
++
++ case 2 :
++ write_label_prolog(doc, doc->page_label, PageLength - PageTop,
++ PageLength - PageBottom, PageWidth);
++ break;
++
++ case 3 :
++ write_label_prolog(doc, doc->page_label, PageWidth - PageRight,
++ PageWidth - PageLeft, PageLength);
++ break;
++ }
++ }
+ }
+
+
+@@ -2176,7 +2200,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
+ case 1 :
+ if (doc->use_ESPshowpage)
+ {
+- write_labels(doc, Orientation);
++ write_labels(doc, doc->orientation);
+ doc_puts(doc, "ESPshowpage\n");
+ }
+ break;
+@@ -2191,7 +2215,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
+ * Rotate the labels back to portrait...
+ */
+
+- write_labels(doc, Orientation - 1);
++ write_labels(doc, doc->orientation - 1);
+ }
+ else if (Orientation == 0)
+ {
+@@ -2217,7 +2241,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
+ default :
+ if (is_last_page(number) && doc->use_ESPshowpage)
+ {
+- write_labels(doc, Orientation);
++ write_labels(doc, doc->orientation);
+ doc_puts(doc, "ESPshowpage\n");
+ }
+ break;
+@@ -2433,6 +2457,12 @@ set_pstops_options(
+ Orientation = 0;
+
+ /*
++ * Save original orientation of the document
++ */
++
++ doc->orientation = Orientation;
++
++ /*
+ * AP_FIRSTPAGE_* and the corresponding non-first-page options.
+ */
+