{
     TransferDataFromWindow();
 
+    // An empty 'to' field signals printing just the
+    // 'from' page.
+    if (m_printDialogData.GetToPage() < 1)
+        m_printDialogData.SetToPage(m_printDialogData.GetFromPage());
+
     // There are some interactions between the global setup data
     // and the standard print dialog. The global printing 'mode'
     // is determined by whether the user checks Print to file
           {
              m_fromText->Enable(TRUE);
              m_toText->Enable(TRUE);
-             m_fromText->SetValue(
-                 wxString::Format(_T("%d"), m_printDialogData.GetFromPage()));
-             m_toText->SetValue(
-                wxString::Format(_T("%d"), m_printDialogData.GetToPage()));
+             if (m_printDialogData.GetFromPage() > 0)
+                m_fromText->SetValue(wxString::Format(_T("%d"), m_printDialogData.GetFromPage()));
+             if (m_printDialogData.GetToPage() > 0)
+                m_toText->SetValue(wxString::Format(_T("%d"), m_printDialogData.GetToPage()));
              if(m_rangeRadioBox)
-                if (m_printDialogData.GetAllPages())
+                if (m_printDialogData.GetAllPages() || m_printDialogData.GetFromPage() == 0)
                    m_rangeRadioBox->SetSelection(0);
                 else
                    m_rangeRadioBox->SetSelection(1);
 
     PMSetPageRange( m_macPrintSettings , data->GetMinPage() , data->GetMaxPage() ) ;
     PMSetCopies( m_macPrintSettings , data->GetNoCopies() , false ) ;
     PMSetFirstPage( m_macPrintSettings , data->GetFromPage() , false ) ;
-    PMSetLastPage( m_macPrintSettings , data->GetToPage() , false ) ;
+
+    int toPage = data->GetToPage();
+    if (toPage < 1)
+        toPage = data->GetFromPage();
+    PMSetLastPage( m_macPrintSettings , toPage , false ) ;
 }
 
 void wxMacCarbonPrintData::CopyFrom( wxNativePrintData* d )
 
 void wxMacClassicPrintData::TransferFrom( wxPrintDialogData* data )
 {
+    int toPage = data->GetToPage();
+    if (toPage < 1)
+        toPage = data->GetFromPage();
     (**m_macPrintSettings).prJob.iFstPage = data->GetFromPage() ;
-    (**m_macPrintSettings).prJob.iLstPage = data->GetToPage() ;
+    (**m_macPrintSettings).prJob.iLstPage = toPage;
 }
 
 void wxMacClassicPrintData::TransferTo( wxPrintDialogData* data )
 
     PMSetPageRange( m_macPrintSettings , data->GetMinPage() , data->GetMaxPage() ) ;
     PMSetCopies( m_macPrintSettings , data->GetNoCopies() , false ) ;
     PMSetFirstPage( m_macPrintSettings , data->GetFromPage() , false ) ;
-    PMSetLastPage( m_macPrintSettings , data->GetToPage() , false ) ;
+
+    int toPage = data->GetToPage();
+    if (toPage < 1)
+        toPage = data->GetFromPage();
+    PMSetLastPage( m_macPrintSettings , toPage , false ) ;
 }
 
 void wxMacCarbonPrintData::CopyFrom( wxNativePrintData* d )
 
 void wxMacClassicPrintData::TransferFrom( wxPrintDialogData* data )
 {
+    int toPage = data->GetToPage();
+    if (toPage < 1)
+        toPage = data->GetFromPage();
     (**m_macPrintSettings).prJob.iFstPage = data->GetFromPage() ;
-    (**m_macPrintSettings).prJob.iLstPage = data->GetToPage() ;
+    (**m_macPrintSettings).prJob.iLstPage = toPage;
 }
 
 void wxMacClassicPrintData::TransferTo( wxPrintDialogData* data )