diff -ur AMC.orig/DataModule/layout.pm AMC/DataModule/layout.pm
--- AMC.orig/DataModule/layout.pm	2015-10-05 10:32:40.338123913 -0700
+++ AMC/DataModule/layout.pm	2015-10-05 10:34:24.836998363 -0700
@@ -493,6 +493,10 @@
 		       ."         AS ratio"
 		       ."  FROM ".$self->table("page")
 		       ." )"},
+       'MapQuestionPage'=>
+       {'sql'=>"SELECT student, page, question "
+	." FROM ".$self->table("box")." WHERE answer=1"
+       },
       };
 }
 
@@ -573,6 +577,14 @@
     return($self->sql_list($self->statement('FULLIDS')));
 }
 
+#Return list of student, page, question
+sub student_question_page{
+    my ($self)=@_;
+    my @list = @{$self->dbh
+		     ->selectall_arrayref($self->statement('MapQuestionPage'))};
+    return(@list);
+}
+
 # page_info returns a HASH reference containing all fields in the
 # layout_page row corresponding to the student,page page.
 
diff -ur AMC.orig/DataModule/scoring.pm AMC/DataModule/scoring.pm
--- AMC.orig/DataModule/scoring.pm	2015-10-05 10:32:40.338123913 -0700
+++ AMC/DataModule/scoring.pm	2015-10-05 10:34:24.836998363 -0700
@@ -519,9 +519,20 @@
 		    ." WHERE student=? AND copy=?"},
      'deleteCodes'=>{'sql'=>"DELETE FROM ".$self->table('code')
 		    ." WHERE student=? AND copy=?"},
+     'conflicts'=>
+     {'sql'=>"SELECT student, copy, question" 
+	  ." FROM ".$self->table('score')." WHERE (why = 'E') OR (why = 'V')" },
     };
 }
 
+sub get_conflicts{
+    my ($self)=@_;
+    my @list = @{$self->dbh
+		     ->selectall_arrayref($self->statement('conflicts'))};
+    return(@list);
+}
+
+
 # default_strategy($type) returns the default scoring strategy string
 # to be used for questions with type $type (QUESTION_SIMPLE or
 # QUESTION_MULT).
diff -ur AMC.orig/Gui/Manuel.glade AMC/Gui/Manuel.glade
--- AMC.orig/Gui/Manuel.glade	2015-10-05 10:32:40.278124561 -0700
+++ AMC/Gui/Manuel.glade	2015-10-05 10:34:24.836998363 -0700
@@ -304,7 +304,59 @@
                       </packing>
                     </child>
                     <child>
-                      <placeholder/>
+                      <object class="GtkHButtonBox" id="hbuttonbox6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkButton" id="button9">
+                            <property name="label">Previous Error</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="has_tooltip">True</property>
+                            <property name="tooltip_text" translatable="yes">Save this page modifications, then go to the previous page.</property>
+                            <signal name="clicked" handler="previous_error" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="con_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">label</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="button10">
+                            <property name="label">Next Error</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="has_tooltip">True</property>
+                            <property name="tooltip_text" translatable="yes">Save this page modifications, then go to next page.</property>
+                            <signal name="clicked" handler="next_error" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
                     <child>
                       <object class="GtkScrolledWindow" id="scrolledwindow1">
diff -ur AMC.orig/Gui/Manuel.pm AMC/Gui/Manuel.pm
--- AMC.orig/Gui/Manuel.pm	2015-10-05 10:32:40.278124561 -0700
+++ AMC/Gui/Manuel.pm	2015-10-05 10:36:07.396012391 -0700
@@ -34,6 +34,12 @@
 use AMC::Data;
 use AMC::DataModule::capture qw/:zone/;
 
+
+my $conflict_num=-1; # which conflict is currently being viewed
+my $num_conflicts=0; # how man conflicts in the list
+my @hconflicts=(); # holds id=student,page,copy and question
+#conflicts should be an array of hashes
+    
 use constant {
     MDIAG_ID => 0,
     MDIAG_ID_BACK => 1,
@@ -85,6 +91,7 @@
     $self->{'layout'}=$self->{'data'}->module('layout');
     $self->{'capture'}=$self->{'data'}->module('capture');
     $self->{'scoring'}=$self->{'data'}->module('scoring');
+    $self->{'scoring'}=$self->{'data'}->module('scoring');
 
     die "No PDF subject file" if(! $self->{'sujet'});
     die "Subject file ".$self->{'sujet'}." not found" if(! -f $self->{'sujet'});
@@ -104,7 +111,7 @@
     $self->{'gui'}->set_translation_domain('auto-multiple-choice');
     $self->{'gui'}->add_from_file($glade_xml);
 
-    for my $k (qw/general area navigation_h navigation_v goto goto_v diag_tree button_photocopy scan_view/) {
+    for my $k (qw/general area navigation_h navigation_v goto goto_v diag_tree button_photocopy scan_view con_label/) {
 	$self->{$k}=$self->{'gui'}->get_object($k);
     }
 
@@ -181,6 +188,50 @@
 
     $self->select_page(0);
 
+    
+## Build list of marking conflicts (duplicate or blanks)
+    $conflict_num=-1; # which conflict is currently being viewed
+    $num_conflicts=0; # how many conflicts in the list
+    @hconflicts=(); # holds id=student,page,copy and question
+    $self->{'layout'}->begin_read_transaction;
+    my @con_table=$self->{'layout'}->student_question_page;
+    $self->{'layout'}->end_transaction;
+
+# print the elements:
+    my $lent = @con_table;
+#    for (my $i=0;$i<$lent;$i++){
+#	print $con_table[$i][0]." "; #student
+#	print $con_table[$i][1]." "; #page
+#	print $con_table[$i][2]."\n"; #question #
+#    }
+
+    # ok, got student, page, question.
+    # now need student question, why, questionID, copy
+    $self->{'scoring'}->begin_read_transaction;
+    my @score_table=$self->{'scoring'}->get_conflicts;
+    $self->{'scoring'}->end_transaction;
+    $lens = @score_table;
+#    for (my $i=0;$i<$lens;$i++){
+#	print $score_table[$i][0]." "; # student
+#	print $score_table[$i][1]." "; #copy #
+#	print $score_table[$i][2]."\n"; #question #
+#     }
+    #now match student & question#'s to build student/page list
+    for (my $i=0 ; $i < $lens ; $i++){
+	for (my $j=0 ; $j < $lent ; $j++){
+	    if (($score_table[$i][0] eq $con_table[$j][0]) and ($score_table[$i][2] eq $con_table[$j][2])){
+		my @id=[$con_table[$j][0], $con_table[$j][1], $score_table[$i][1]];
+		push @hconflicts, { id => @id, question => $con_table[$j][2] };
+#		print "$i $j added $con_table[$j][0]/$con_table[$j][1] question $con_table[$j][2]\n";
+		last;
+	    }
+	}
+
+    }
+    $num_conflicts=@hconflicts;
+    my $lnum = $conflict_num+1;
+    $self->{'con_label'}->set_text("Errs: $lnum/$num_conflicts");
+    debug "number of conflicts: $num_conflicts\n";
     return($self);
 }
 
@@ -535,6 +586,10 @@
 	}
 
 	# mise a jour des cases suivant saisies deja presentes
+	my @con_id=();
+	if ($conflict_num ge 0){
+	    @con_id=@{$hconflicts[$conflict_num]->{'id'}};
+	}
 
 	for my $i (@{$self->{'layinfo'}->{'box'}}) {
 	  my $id=$i->{'question'}."."
@@ -546,6 +601,16 @@
 	  debug "Q=$id R=$t";
 	  $i->{'id'}=[@spc];
 	  $i->{'ticked'}=$t;
+	  $i->{'cur_conflict'}=0;
+	  if ($conflict_num ge 0){
+	      if ( $con_id[0] eq ${$i->{'id'}}[0] and
+		   $con_id[1] eq ${$i->{'id'}}[1] and
+		   $con_id[2] eq ${$i->{'id'}}[2] and
+		   $hconflicts[$conflict_num]->{'question'} eq $i->{'question'}){
+		  $i->{'cur_conflict'} = 1;
+		  debug "marked current_conflict: stud, page: ${$i->{'id'}}[0], ${$i->{'id'}}[1]\n";
+	      }
+	  }
 	}
       }
     }
@@ -602,6 +667,42 @@
     $self->maj_list_i;
 }
 
+sub next_error{
+    my ($self)=@_;
+    return if ($num_conflicts <= 0);
+    if ($conflict_num < $num_conflicts-1){
+	$conflict_num += 1;
+    }
+    if (${$hconflicts[$conflict_num]->{'id'}}[2] eq '0'){
+	my $dest=$self->{($self->{'editable'} ? 'goto' : 'goto_v')}->set_text("${$hconflicts[$conflict_num]->{'id'}}[0]/${$hconflicts[$conflict_num]->{'id'}}[1]");
+    }
+    else{
+	my $dest=$self->{($self->{'editable'} ? 'goto' : 'goto_v')}->set_text("${$hconflicts[$conflict_num]->{'id'}}[0]/${$hconflicts[$conflict_num]->{'id'}}[1]:${$hconflicts[$conflict_num]->{'id'}}[2]");
+    }
+    my $lnum = $conflict_num+1;
+    $self->{'con_label'}->set_text("Errs: $lnum/$num_conflicts");
+    $self->goto_activate_cb();
+
+}
+
+sub previous_error{
+    my ($self)=(@_);
+    return if ($num_conflicts <= 0);
+    if ( $conflict_num >0 ){
+	$conflict_num -= 1;
+    }
+    if (${$hconflicts[$conflict_num]->{'id'}}[2] eq '0'){
+	my $dest=$self->{($self->{'editable'} ? 'goto' : 'goto_v')}->set_text("${$hconflicts[$conflict_num]->{'id'}}[0]/${$hconflicts[$conflict_num]->{'id'}}[1]");
+    }
+    else{
+	my $dest=$self->{($self->{'editable'} ? 'goto' : 'goto_v')}->set_text("${$hconflicts[$conflict_num]->{'id'}}[0]/${$hconflicts[$conflict_num]->{'id'}}[1]:${$hconflicts[$conflict_num]->{'id'}}[2]");
+    }
+    my $lnum = $conflict_num+1;
+    $self->{'con_label'}->set_text("Errs: $lnum/$num_conflicts");
+    $self->goto_activate_cb();
+
+}
+
 sub passe_precedent {
   my ($self)=@_;
   my ($path)=$self->{'diag_tree'}->get_cursor();
diff -ur AMC.orig/Gui/PageArea.pm AMC/Gui/PageArea.pm
--- AMC.orig/Gui/PageArea.pm	2015-10-05 10:32:40.278124561 -0700
+++ AMC/Gui/PageArea.pm	2015-10-05 10:46:21.052131121 -0700
@@ -51,7 +51,8 @@
     $self->{scorezone_color_name}="#DE61E2";
     $self->{empty_color_name}="#78FFED";
     $self->{invalid_color_name}="#FFEF3B";
-
+    $self->{'conflict_color_name'}="#00FF00";
+   
     $self->{linewidth_zone}=1;
     $self->{linewidth_box}=1;
     $self->{linewidth_box_scan}=2;
@@ -67,7 +68,7 @@
     $self->{'gc'} = Gtk2::Gdk::GC->new($self->window);
 
     $self->{'color'}= Gtk2::Gdk::Color->parse($coul);
-    for my $type ('',qw/scorezone_ question_ unticked_ empty_ invalid_/) {
+    for my $type ('',qw/scorezone_ question_ unticked_ empty_ invalid_ conflict_/) {
       $self->{$type.'color'}=
 	Gtk2::Gdk::Color->parse($self->{$type.'color_name'}) if($type);
       $self->window->get_colormap->alloc_color($self->{$type.'color'},TRUE,TRUE);
@@ -305,7 +306,7 @@
 	    $self->{'gc'}->set_foreground($self->{'colormark'});
 
 	    for $box (@{$self->{'layinfo'}->{'namefield'}}) {
-		$self->draw_box($box,'');
+		$self->draw_box($box,'',0);
 	    }
 
 	    $box=$self->{'layinfo'}->{'mark'};
@@ -323,7 +324,7 @@
 	    }
 
 	    for my $box (@{$self->{'layinfo'}->{'digit'}}) {
-		$self->draw_box($box,'');
+		$self->draw_box($box,'',0);
 	    }
 
 	}
@@ -355,6 +356,11 @@
 		    @{$self->{'layinfo'}->{'box'}}) {
 	    $self->draw_box($box,'');
 	  }
+	  $self->{'gc'}->set_foreground($self->{'conflict_color'});
+	  for $box (grep { $_->{'cur_conflict'} }
+		    @{$self->{'layinfo'}->{'box'}}) {
+	      $self->draw_box($box,'',$self->{box_external});
+ 	  }
 	} else {
 	  $self->{'gc'}->set_line_attributes($self->{linewidth_special},
 					     GDK_LINE_SOLID,GDK_CAP_BUTT,GDK_JOIN_MITER);
@@ -380,6 +386,11 @@
 	  for $box (@{$self->{'layinfo'}->{'questionbox'}}) {
 	    $self->draw_box($box,'');
 	  }
+	  $self->{'gc'}->set_foreground($self->{'conflict_color'});
+	  for $box (grep { $_->{'cur_conflict'} }
+		    @{$self->{'layinfo'}->{'box'}}) {
+	      $self->draw_box($box,'',$self->{box_external});
+	  }
 	}
 	$self->{'gc'}->set_line_attributes($self->{linewidth_zone},
 					   GDK_LINE_SOLID,GDK_CAP_BUTT,GDK_JOIN_MITER);

