diff --git a/bookcount.pl b/bookcount.pl
new file mode 100755
index 0000000000..1057492d8f
--- /dev/null
+++ b/bookcount.pl
@@ -0,0 +1,194 @@
+#!/usr/bin/perl
+
+#written 7/3/2002 by Finlay
+#script to display reports
+
+use strict;
+use CGI;
+use C4::Search;
+use C4::Circulation::Circ2;
+use C4::Output;
+
+# get all the data ....
+my %env;
+my $main='#cccc99';
+my $secondary='#ffffcc';
+
+my $input = new CGI;
+my $itm = $input->param('itm');
+my $bi = $input->param('bi');
+my $bib = $input->param('bib');
+my $branches = getbranches(\%env);
+
+my $idata = itemdatanum($itm);
+my $data = bibitemdata($bi);
+
+my $homebranch = $branches->{$idata->{'homebranch'}}->{'branchname'};
+my $holdingbranch = $branches->{$idata->{'holdingbranch'}}->{'branchname'};
+
+my ($lastmove, $message) = lastmove($itm);
+
+my $lastdate;
+my $count;
+if (not $lastmove) {
+ $lastdate = $message;
+ $count = issuessince($itm , 0);
+} else {
+ $lastdate = $lastmove->{'datearrived'};
+ $count = issuessince($itm ,$lastdate);
+}
+
+
+# make the page ...
+print $input->header;
+
+
+print startpage;
+print startmenu('report');
+print center;
+
+print <<"EOF";
+
+$data->{'title'} ($data->{'author'})
+
+
+
+ |
+ BARCODE $idata->{'barcode'} |
+
+
+
+
+Home Branch: $homebranch
+Current Branch: $holdingbranch
+Date arrived at current branch: $lastdate
+Number of issues since since the above date : $count
+
+
+| Branch | No. of Issues | Last seen at branch |
+EOF
+
+foreach my $branchcode (keys %$branches) {
+ my $issues = issuesat($itm, $branchcode);
+ my $date = lastseenat($itm, $branchcode);
+ my $seen = slashdate($date);
+ print << "EOF";
+| $branches->{$branchcode}->{'branchname'} |
+ $issues | $seen |
+EOF
+}
+print <<"EOF";
+
+ |
+
+
+EOF
+
+
+print endmenu('report');
+print endpage;
+
+
+##############################################
+# This stuff should probably go into C4::Search
+# database includes
+use DBI;
+use C4::Database;
+
+sub itemdatanum {
+ my ($itemnumber)=@_;
+ my $dbh=C4Connect;
+ my $itm = $dbh->quote("$itemnumber");
+ my $query = "select * from items where itemnumber=$itm";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my $data=$sth->fetchrow_hashref;
+ $sth->finish;
+ $dbh->disconnect;
+ return($data);
+}
+
+sub lastmove {
+ my ($itemnumber)=@_;
+ my $dbh=C4Connect;
+ my $var1 = $dbh->quote($itemnumber);
+ my $sth =$dbh->prepare("select max(branchtransfers.datearrived) from branchtransfers where branchtransfers.itemnumber=$var1");
+ $sth->execute;
+ my ($date) = $sth->fetchrow_array;
+ return(0, "Item has no branch transfers record") if not $date;
+ my $var2 = $dbh->quote($date);
+ $sth=$dbh->prepare("Select * from branchtransfers where branchtransfers.itemnumber=$var1 and branchtransfers.datearrived=$var2");
+ $sth->execute;
+ my ($data) = $sth->fetchrow_hashref;
+ return(0, "Item has no branch transfers record") if not $data;
+ $sth->finish;
+ $dbh->disconnect;
+ return($data,"");
+ }
+
+sub issuessince {
+ my ($itemnumber, $date)=@_;
+ my $dbh=C4Connect;
+ my $itm = $dbh->quote($itemnumber);
+ my $dat = $dbh->quote($date);
+ my $sth=$dbh->prepare("Select count(*) from issues where issues.itemnumber=$itm and issues.timestamp > $dat");
+ $sth->execute;
+ my $count=$sth->fetchrow_hashref;
+ $sth->finish;
+ $dbh->disconnect;
+ return($count->{'count(*)'});
+}
+
+sub issuesat {
+ my ($itemnumber, $brcd)=@_;
+ my $dbh=C4Connect;
+ my $itm = $dbh->quote($itemnumber);
+ my $brc = $dbh->quote($brcd);
+ my $query = "Select count(*) from issues where itemnumber=$itm and branchcode = $brc";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my ($count)=$sth->fetchrow_array;
+ $sth->finish;
+ $dbh->disconnect;
+ return($count);
+}
+
+sub lastseenat {
+ my ($itemnumber, $brcd)=@_;
+ my $dbh=C4Connect;
+ my $itm = $dbh->quote($itemnumber);
+ my $brc = $dbh->quote($brcd);
+ my $query = "Select max(timestamp) from issues where itemnumber=$itm and branchcode = $brc";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my ($date1)=$sth->fetchrow_array;
+ $sth->finish;
+ $query = "Select max(datearrived) from branchtransfers where itemnumber=$itm and tobranch = $brc";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my ($date2)=$sth->fetchrow_array;
+ $sth->finish;
+ $dbh->disconnect;
+ $date2 =~ s/-//g;
+ $date2 =~ s/://g;
+ $date2 =~ s/ //g;
+ my $date;
+ if ($date1 < $date2) {
+ $date = $date2;
+ } else {
+ $date = $date1;
+ }
+ return($date);
+}
+
+
+#####################################################
+# write date....
+sub slashdate {
+ my ($date) = @_;
+ if (not $date) {
+ return "never";
+ }
+ my ($yr, $mo, $da, $hr, $mi) = (substr($date, 0, 4), substr($date, 4, 2), substr($date, 6, 2), substr($date, 8, 2), substr($date, 10, 2));
+ return "$hr:$mi $da/$mo/$yr";
+}