P:dataTable - paginacao selectionMode="multiple"

Pessoal, estou com um problema , que quando clico no ckeckbox na primeira pagina e vou para a segunda pagina e volto para a primeira pagina , ele desmarca o checkbox da primeira pagina, conforme a imagem em anexo:

Obs. Esta fazendo normalmente o que eu quero, mas esta com esta falha.

segue abaixo o meu codigo :

            <p:dialog id="modalprocedimento" header="#{msg.guiaconsultaspsadtsol_consultaprocedimento}" widgetVar="procedimento" modal="true" height="490" width="750" >  
                          <p:dataTable id="lazyDataTableproc" value="#{cadguiaMbean.tabprocList}" var="tabproc" pemptyMessage="Nenhum registro encontrado."   
                                   paginator="true" rows="10"  pageLinks="10"  
                                   paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks}   
                                   {NextPageLink} {LastPageLink} Registros por página: {RowsPerPageDropdown}"  
                                   
                                   rowKey="#{tabproc.tabprocPK.codproc}"
                                   selection="#{cadguiaMbean.tabprocList1}"  
                            
                                     rowsPerPageTemplate="5,10,15,20" lazy="true">
                                        
                            
                            <p:column selectionMode="multiple" styleClass="text-right" /> 
                              
			     <p:column
                                  id="codproc" filterBy="#{tabproc.tabprocPK.codproc}" 
                                  headerText="codproc" 
                                  filterMatchMode="contains">                               
					<f:facet name="header">codproc</f:facet>
                                        <h:outputText value="#{tabproc.tabprocPK.codproc}" />
		              </p:column>
                                        
			     <p:column
                                  id="nome" filterBy="#{tabproc.descricao}" 
                                  headerText="descricao" 
                                  filterMatchMode="contains">                               
					<f:facet name="header">descricao</f:facet>
                                        <h:outputText value="#{tabproc.descricao}" />
		              </p:column>
                
                        <p:column headerText="" styleClass="fonte" >                          
                            <h:commandLink actionListener="#{cadguiaMbean.selecionarproced(tabproc)}">
				
                               <!-- <p:graphicImage value="../resources/images/confirmarnew.png"/>-->
                              <p:graphicImage value="../resources/images/confirmarope.png"/>
			    </h:commandLink>
                        </p:column>                            
        	     </p:dataTable>         
                <p:commandButton actionListener="#{cadguiaMbean.itensselecionadosProcedimentos}" value="Enviar" update="dttableprocedimento" oncomplete="procedimento.hide();"/>
            </p:dialog>    
**************************************************

Bean

    @Override
    public void iniciarView() {


        tabprocList = new LazyDataModel<Tabproc>() {    
            @Override  
            public List<Tabproc> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {  
                     int paginacao; 
                     paginacao = 0;               
                     String Clausula ="";
                        for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
                            String filterProperty = it.next(); // table column name = field name

                            String filterValue = filters.get(filterProperty);                           
                            
                            
                            Clausula = "where t."+filterProperty+" like'%"+filterValue+"%'";
                            paginacao=1;
                            tabproc = tabprocServico.buscafindTabproc(first, pageSize,Clausula);

                         }                
                
                 if (paginacao==0){
                    tabproc = tabprocServico.buscafindTabproc(first, pageSize,"");
                 }
                 
                  return tabproc;
            }            
             
             
         };
         tabprocList.setRowCount(tabprocServico.buscacountTabprocTotal());  
}        
        


   public void itensselecionadosProcedimentos() {  
        itemguia = new ArrayList<Itensguia>();  
       
        
        
        
       
       
        for (Tabproc tab : tabprocList1) { 
            
            Cadguia guia = new Cadguia();
            guia.setCodguia(1);
            
           
            /*System.out.println(tab.getTabprocPK().getCodproc());                      
            System.out.println(tab.getDescricao());   */
///            itensguia.add(new Itensguia(1,2200,tab,cadguia));
            itemguia.add(new Itensguia(1,2200,tab,guia));                        
            Itensguias = itemguia;
          
            System.out.print("fdsfasdfsda");
            
        }  
          
    }  






Sera que falta implementar as rotinas abaixo :


            @Override
            public Tabproc getRowData(String rowKey) {
                return super.getRowData(rowKey);
            }

            @Override
            public Object getRowKey(Tabproc object) {
                return super.getRowKey(object);
            }